我正在开发一个利用多个线程/NSManagedObjectContexts 的对象导入功能,使用http://www.mac-developer-network.com/columns/coredata/may2009/作为我的指南(请注意,我正在为 iPhone 开发)。
出于某种原因,当我保存我的一个上下文时,另一个会立即更新更改,即使我已经注释掉了我对 mergeChangesFromContextDidSaveNotification 的调用。在没有明确调用的情况下,上下文可能会相互合并,是否有任何原因?
这里是发生了什么的日志:
// 1.) Main context is saved with "Peter Gabriel"
// 2.) Test context is created, begins with same contents as main context
// 3.) Main context is inserted with "Spoon"
// 4.) Test context is inserted with "Phoenix"
// Contents at this point:
CoreTest[4341:903] Artists in main context: (
"Peter Gabriel",
"Spoon"
)
CoreTest[4341:903] Artists in test context: (
"Peter Gabriel",
"Phoenix"
)
// 5.) testContext is saved
// New contents of contexts:
CoreTest[4341:903] Artists in main context: (
"Peter Gabriel",
"Phoenix",
"Spoon"
)
CoreTest[4341:903] Artists in test context: (
"Peter Gabriel",
"Phoenix"
)
如您所见,测试上下文在中途被保存,并且主上下文突然具有来自测试上下文的新对象,即使我还没有执行整个 NSManagedObjectContextDidSaveNotification/mergeChangesFromContext 组合。
我的理解是,除非明确这样做,否则不会合并任何更改……有人知道这里发生了什么吗?