为每个新的NSOperation或Thread创建一个新的NSManagedObjectContext是否足够?

时间:2011-06-01 13:31:55

标签: iphone multithreading ios core-data nsoperation

我需要在NSOperationQueue操作中使用Core Data。我听说为每个NSOperation或Thread创建一个NSManagedObject实例就足够了,然后Core Data就不会出现多线程问题。这是对的吗?

当其他MOC在NSOperations中被修改后会自动更新吗?

2 个答案:

答案 0 :(得分:2)

对于每个线程/操作,您需要新的MOC(托管对象上下文)。为新上下文提供与主上下文相同的持久性存储协调器,然后在保存上下文时需要处理合并。请参阅我之前的答案,其中解释了如何执行合并:

How to Deal with Temporary NSManagedObject instances?

答案 1 :(得分:1)

  

当其他MOC在NSOperations中被修改后会自动更新吗?

没有。您需要处理NSManagedObjectContextDidSaveNotification通知并使用mergeChangesFromContextDidSaveNotification:合并更改。有关详细信息和其他方法,请参阅the documentation