我是否需要担心NSNotification Observers中的不同上下文

时间:2015-01-19 18:57:48

标签: ios objective-c observer-pattern

我有一个类正在观察何时创建一个新对象'Product',以便它可以更新'User'对象中的细节。

当我保存我的Product对象时,我在后台线程上的方法中执行它,该方法发出已创建新对象的Notification。我在通知的userInfo中设置了对象。

观察员在发布通知时触发。我需要保存一些数据,所以我创建了一个新的保存块,然后创建一个新的NSManagedObjectContext。我 ASSUME 我必须在这个新的上下文中获取对象。

不幸的是,当我尝试从新上下文中获取记录时,它返回一个带有空详细信息的对象。但是,来自通知的userInfo的对象已完全填充。

我是否正确地假设我需要重新获取记录?重新获取的记录是否为空可能是因为保存尚未完成?

1 个答案:

答案 0 :(得分:0)

我们谈论的通知是saveContext完成时生成的CoreData吗? (NSManagedObjectContextDidSaveNotification)。

在这种情况下,当您收到通知时,您必须手动将上下文与

合并
dispatch_sync(dispatch_get_main_queue(), ^{
  [_managedObjectContext mergeChangesFromContextDidSaveNotification:notification];

});

因此,保存了Product实体中的更改的上下文将其更改合并到其他上下文中。

希望它有所帮助。