ios - 在多个上下文中保持 NSManagedObjects 同步

标签 ios core-data nsmanagedobjectcontext

我需要以下场景的建议。我的应用程序中有两个托管对象上下文。根据线程,它们通过相同的属性访问,即

self.managedObjectContext

如果任何上下文更改或保存数据,我想使用

在两个上下文中保持数据同步

-refreshObject:mergeChanges:

并传递 mergeChanges = YES,并且应用程序还在监听通知 NSManagedObjectContextDidSaveNotification。但我不知道哪个上下文保存了数据。 (或者我可以吗?如果可以,有人可以告诉我吗?)

我的问题是,在收到此通知时,我应该在两种情况下执行 -refreshObject:mergeChanges: 吗?例如

[bgContext refreshObject:self mergeChanges:YES];
[fgContext refreshObject:self mergeChanges:YES];

[self.managedObjectContext refreshObject:self mergeChanges:YES];

或者我应该遵循什么方法?

最佳答案

在调用 NSNotificationCenter -addObserver:selector:name:object: 时,提供适当的 MOC 作为 :object 参数。现在您只会收到来自该 MOC 的更改通知。如果您使用基于 block 的 addObserver:... 调用,则 object: 参数的作用相同。

您也可以只使用通知,而无需为每个上下文注册不同的选择器/ block 。当通知到达时,您可以检查其 object 属性并使用它来确定哪个上下文需要更新。

关于ios - 在多个上下文中保持 NSManagedObjects 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25217338/

相关文章:

ios - 核心数据模型规划

ios - 使 UIPickerView 依赖于选定的行(Swift)

objective-c - 使用 NSPredicate 匹配整数列表

ios - 如何使用 NSCoding 在我的应用程序中保存/加载数据?

ios/xcode : core data throwing error on NSManagedObjectContext

objective-c - 将两个 JSON 文件中的数据写入具有关系的核心数据模型

ios - 删除查询结果 tvOS 上的内联搜索

ios - iOS 中的条码扫描器

ios - 激活约束 : and deactivateConstraints: not persisting after rotation for constraints created in IB

core-data - 如何保留临时 NSManagedObjectContext 而不将其保存到父上下文