我的应用程序中目前有 2 个上下文。我的应用程序使用多个选项卡,因此一个选项卡可能正在显示数据,而另一个选项卡可能处于数据输入模式。
我使用一个主要上下文来读取大部分数据以进行显示。当我插入数据时,我正在使用第二个临时上下文,因为我不希望其他选项卡的操作来保存添加到上下文中的可能不完整的对象。
我一直在阅读苹果并发指南:http: //developer.apple.com/library/ios/#documentation/cocoa/conceptual/coredata/Articles/cdConcurrency.html#//apple_ref/doc/uid/TP40003385-SW1
它表明您应该使用通知在上下文之间传播更改。
我的两个上下文都使用相同的传播存储对象。我的问题是,如果在选项卡 A 中对上下文 A 进行了更改,当使用上下文 B 在选项卡 B 中重新发出获取请求时,更改是否会简单地显示在选项卡 B 中?
这就是我目前所看到的。我假设核心数据缓存是在传播存储级别完成的?如果那是正确的,那么仅在您不打算重新运行 fetch 查询的情况下才需要同步上下文,以便您可以选择性地仅更新已更改的 NSManagedObjects?
这就是我获得新背景的方式:
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
NSManagedObjectContext *newContext;
if (coordinator != nil) {
newContext = [[NSManagedObjectContext alloc] init];
[newContext setPersistentStoreCoordinator:coordinator];
}