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

问题描述 投票:0回答:2

我使用UIViewController实例创建了NSManagedObject,我们称之为AAmainContext获取。

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

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

ios core-data nsmanagedobjectcontext
2个回答
2
投票

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

  1. 添加NSManagedObjectContextDidSave通知的观察者。
  2. 发布此通知时,使用mergeChanges(fromContextDidSave notification: Notification)从保存操作中所做的更改更新您的上下文。您可以直接传递Notification,然后合并将会发生,您的对象将被刷新。

另一种方法是使用refresh(_ object: NSManagedObject, mergeChanges flag: Bool)作为您的对象。通过true获取第二个参数,以合并来自持久性存储的更改。这可能不太好,因为它只影响单个对象而不是上下文中的所有对象,但在某些情况下它很有用。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.