我需要针对以下方案提供建议。我的应用程序中有两个托管对象上下文。根据线索,它们通过相同的属性访问,即
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];
或者我应该遵循什么方法?
答案 0 :(得分:1)
在致电NSNotificationCenter -addObserver:selector:name:object:
时,请提供相应的MOC作为:object
参数。现在,您只会收到来自该MOC的更改通知。如果您使用基于块的object:
电话,addObserver:...
参数的工作方式相同。
您也可以仅使用notfication,而无需在每个上下文中注册不同的选择器/块。通知到达后,您可以检查其object
属性并使用它来确定需要更新的上下文。