我有一个基于默认xcode模板的核心数据应用程序,我有用于查看数据的主UI,然后我有一个下载/插入/编辑数据的后台线程。
我想,当应用程序启动时,我可以创建两个NSManagedObjectContext,一个应用程序从中读取,另一个在后台线程中写入,然后当它完成写入时,它将调用performSelectorOnMainThread来同步两个NSManagedObjectContext对象。
我对cocoa相当新,并想知道是否有人可以确认这应该有效,并且有人知道有关此的示例或讨论,因为我无法使同步正常工作。
答案 0 :(得分:3)
您想看看-[NSManagedObjectContext mergeChangesFromContextDidSaveNotification:]
。从工作线程的托管对象上下文注册更改通知。在通知回调中,调用主线程的托管对象上下文的mergeChangesFromContextDidSaveNotification
。确保在主线程上调用此方法(更改通知将发布在工作线程上)。
答案 1 :(得分:1)
您是手动创建后台线程吗?如果你是,我建议在NSURLConnection中遵循Cocoa的委托模式,在后台进行实际下载,并在前台处理数据。
如果您觉得仍需要手动创建线程,请阅读“核心数据编程指南”的Multi-Threading in Core Data部分以获取更多信息。