我工作上的一个目的进口的功能,使用了多线程/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, 见 这个苹果医生.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top