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

时间:2014-08-09 09:57:19

标签: ios core-data nsmanagedobjectcontext

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

self.managedObjectContext

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

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

-refreshObject:mergeChanges:

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

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

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

OR

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

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

1 个答案:

答案 0 :(得分:1)

在致电NSNotificationCenter -addObserver:selector:name:object:时,请提供相应的MOC作为:object参数。现在,您只会收到来自该MOC的更改通知。如果您使用基于块的object:电话,addObserver:...参数的工作方式相同。

您也可以仅使用notfication,而无需在每个上下文中注册不同的选择器/块。通知到达后,您可以检查其object属性并使用它来确定需要更新的上下文。