如何重新获取NSManagedContext中存在的对象

时间:2018-03-05 15:58:36

标签: ios core-data nsmanagedobjectcontext

我使用UIViewController实例创建了NSManagedObject,我们称之为A。已从A获取mainContext

在项目的其他部分,某些流程已使用NSPersistedContainer更新backgroundContext。在此更新期间,A已更改状态。

从第一段更新UIViewController的最佳方法是什么?如何重新A以更新NSManagedObject中的现有mainContext

2 个答案:

答案 0 :(得分:2)

处理将一个上下文合并到另一个上下文中的更改的正确方法是:

  1. NSManagedObjectContextDidSave通知添加观察员。
  2. 发布此通知时,使用mergeChanges(fromContextDidSave notification: Notification)更新保存操作中所做更改的上下文。您只需传递Notification,就会发生合并,您的对象也会刷新。
  3. 另一种方法是使用refresh(_ object: NSManagedObject, mergeChanges flag: Bool)作为您的对象。传递true以获取第二个参数以合并来自持久性存储的更改。这可能不太好,因为它只影响单个对象而不是上下文中的所有对象,但在某些情况下它很有用。

答案 1 :(得分:0)

使用NSFetchRequest获取谓词为objectID! :)

id对于现有(已保存)对象的上下文有效