为什么会改变从一个NSManagedObjectContext到另一个没有一个明确的合并?
-
20-09-2019 - |
题
我工作上的一个目的进口的功能,使用了多线程/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组合。
我的理解是,没有变化,将永远不会合并,除非这样做的明确...任何人都不会知道什么在这里?
解决方案
我的理解是,没有变化,将永远不会合并,除非这样做的明确...
这是不正确的。我猜以后你的 5)
你重新获取 Artists
在主要的上下文,对吧?任何取始终下降到的磁盘上,访问该文件。如果这之后,保存从一个不同的上下文中,将获取新的条目刚刚创建的。如果有冲突,那将是处理与根据你的 mergePolicy
, 见 这个苹果医生.
不隶属于 StackOverflow