【发布时间】:2015-09-16 07:46:16
【问题描述】:
我正在将我的 CoreData 设置更改为在 1 个 NSPersistentStoreCoordinator 下有 2 个 NSManagedObjectContexts。
-
Root Context 是
NSManagedObjectContext用NSPrivateQueueConcurrencyType实例化并设置为NSMergeByPropertyStoreTrumpMergePolicy -
主上下文是
NSManagedObjectContext实例化的NSMainQueueConcurrencyType也设置为NSMergeByPropertyStoreTrumpMergePolicy
它们都没有通过“父子”关系连接,但是它们被分配了相同的NSPersistentStoreCoordinator 对象。 主上下文正在监听根上下文的NSManagedObjectContextDidSaveNotification通知并在performBlock:内部进行必要的合并
偶尔,当NSFetchedResultsController 的实例与主上下文 挂钩时,我得到了performFetch
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“语句仍处于活动状态”
我想知道我在这里要做的事情是不应该做还是Core Data的限制。
谢谢
【问题讨论】:
-
是什么导致决定不通过父子关系连接上下文?
-
我觉得如果我让 Main Context 成为 Root Context(我们目前拥有的模型)的子级,并且我们有一个“ Import Context" 作为 Main Context 的子级,它会减慢 UI,因为每个更改都必须经过 Main Context 的队列
-
只是为了确认一下,你打电话给
mergeChangesFromContextDidSaveNotification:? -
@MatthewGillingham 是的
标签: ios core-data nsmanagedobjectcontext