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

标签 iphone ios core-data

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

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

最佳答案

Will the fetched object reflect the changes I just made to the property on the main thread?

没有。更改不会反射(reflect)在子上下文中,直到您 -refreshObject:mergeChanges:YES。

就像深思熟虑一样,UIManagedDocument 以相反的方式执行此操作。它为主线程创建一个子上下文,并使用 NSPrivateQueueConcurrencyType 作为父上下文。现在,在主线程上进行的所有更新都将自动传播到父上下文。因此,当文档在后台保存时,所有更改都将在那里。

关于iphone - 使用 Core Data 将更改从一个上下文合并到另一个上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253561/

相关文章:

iphone - MKAnnotation viewForAnnotation 从未被调用

android - Phonegap 离线 map 与 OpenLayers 和 Open Street Maps

ios - 如何避免核心数据中的重复记录 - ios

ios - 从 NSSet 获取 NSManagedObject

iphone - 安排与外部 UIView 相关的 UIView subview

iphone - 原生iPhone数据库,iPhone上的所有数据

iphone - MKMapRect 缩放太多

iOS 8 Today extensionContext.openUrl 不工作

ios - 将 NSNumber 发送到另一个类方法 - Objective C

ios - 使用 Core Data 在 Apple Watch 和 iPhone 之间共享数据