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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重新获取NSManagedContext中存在的对象相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

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

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

另一答案

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

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

以上是关于如何重新获取NSManagedContext中存在的对象的主要内容,如果未能解决你的问题,请参考以下文章

使用最新版本的 Magical Record 保存 NSManagedContext 的正确方法

NSManagedContext 返回旧数据而不是新数据

在 IOS 9 及更低版本中创建 nsmanagedcontext

在Ansible中,如果系统在更新该行之前重新启动,如何重复获取文件直到存在一行?

可以将 NSmanagedObject 移动到另一个 NSManagedContext 吗?

将 NSManagedObject 与另一个 NSManagedContext(多线程)中的“相同”NSManagedObject 合并