在“暂存器”MOC中更改NSManagedObjects时,在“显示”MOC中更新NSManagedObjects

时间:2013-09-02 19:38:03

标签: ios core-data ios6 nsmanagedobjectcontext

假设我有一个显示MOC,用于显示从Web服务获取的地址簿联系人。在应用程序的其他地方,我有一个搜索功能,在给定用户输入的查询的情况下搜索Web服务,然后我将这些对象提取并存储在暂存器MOC中,这样它就不会“污染”由显示器MOC提供的显示。

现在假设用户修改了暂存器MOC中的联系人。我想将这些更改同步到显示MOC中的任何等效对象(如果存在)。我不希望将更改后的对象添加到显示器MOC(如果它已经存在),并且我希望更改也能以其他方式工作(例如,如果用户更改了显示器MOC中的联系人,则应该在暂存器MOC中进行更改,但前提是已存在等效对象)。我不希望MOC通过对象更新将对象添加到它们中。使暂存器MOC成为显示器MOC的子级听起来像是错误的解决方案。

确保不同MOC中的等效对象保持同步而不更改任何其他MOC中对象的补充的最佳模式是什么?

1 个答案:

答案 0 :(得分:1)

这是NSManagedObjectContextDidSaveNotification的目的。每当上下文保存更改时,将自动发布此通知以及有关更改内容的信息。观察此通知,并使用mergeChangesFromContextDidSaveNotification:方法获取保存在一个上下文中的更改,并将它们合并到另一个上下文中。