可可核心数据 - 背景线程

时间:2009-08-21 21:11:28

标签: cocoa multithreading

我有一个基于默认xcode模板的核心数据应用程序,我有用于查看数据的主UI,然后我有一个下载/插入/编辑数据的后台线程。

我想,当应用程序启动时,我可以创建两个NSManagedObjectContext,一个应用程序从中读取,另一个在后台线程中写入,然后当它完成写入时,它将调用performSelectorOnMainThread来同步两个NSManagedObjectContext对象。

我对cocoa相当新,并想知道是否有人可以确认这应该有效,并且有人知道有关此的示例或讨论,因为我无法使同步正常工作。

2 个答案:

答案 0 :(得分:3)

您想看看-[NSManagedObjectContext mergeChangesFromContextDidSaveNotification:]。从工作线程的托管对象上下文注册更改通知。在通知回调中,调用主线程的托管对象上下文的mergeChangesFromContextDidSaveNotification。确保在主线程上调用此方法(更改通知将发布在工作线程上)。

答案 1 :(得分:1)

您是手动创建后台线程吗?如果你是,我建议在NSURLConnection中遵循Cocoa的委托模式,在后台进行实际下载,并在前台处理数据。

如果您觉得仍需要手动创建线程,请阅读“核心数据编程指南”的Multi-Threading in Core Data部分以获取更多信息。