使用Core Data将更改从一个上下文合并到另一个上下文

时间:2012-06-28 22:02:54

标签: iphone ios core-data

我对iOS 5并发选项感到有些困惑。通常,使用旧方法,您必须使用mergeChanges和notification手动跟踪从一个上下文到另一个上下文的更改。但是如果我的理解是正确的,使用新选项,您可以使用带有子上下文的NSMainQueueConcurrencyType。因此,无论何时保存子上下文,更改都会自动推送并与父项合并,而无需任何其他手动工作,对吗?

如果是这样,我遇到了问题。假设我有一个由主上下文提取的对象。然后我改变了这些对象的一些属性,但我还没有保存。然后,在父设置为mainContext的NSPrivateQueueConcurrencyType上,我进行提取以检索刚刚在主上下文中修改的对象。获取的对象是否会反映我刚刚对主线程上的属性所做的更改?

1 个答案:

答案 0 :(得分:2)

  

获取的对象是否会反映我刚刚对主线程上的属性所做的更改?

没有。在您使用-refreshObject:mergeChanges:YES之前,更改不会反映在子上下文中。

同样值得深思的是,UIManagedDocument反过来也是这样做的。它为主线程创建子上下文,并使用NSPrivateQueueConcurrencyType作为父线程的上下文。现在,在主线程上进行的所有更新都将自动传播到父上下文。因此,当文档在后台保存时,所有更改都将在那里。