如何通知一个目标的获取结果控制器关于另一个目标的托管对象上下文发生的变化?

How to notify the fetched results controller of one target about the changes happened in managed object context of another target?

有两个目标 运行 并行共享一个公共数据库。假设我使用 target1 的上下文创建了一个对象并将其添加到数据库中。 如何更新 target2 中的 NSFetchedResultsController 以了解发生的变化?

获取的结果控制器观察(主)上下文中的变化。由于您的 2 个应用程序有自己的主要上下文,因此任何更改都不会相互广播。

你宁愿让 FRC 在用户 returns 到后台应用程序时重新获取,而不是在后台更新它,因为这会导致系统关闭无论如何应用程序。

另一个进程所做的更改称为远程更改,可以通过两种方式处理:

  1. mergeChangesFromRemoteContextSave 但是,如果第一个应用程序对其上下文进行了巨大的更改,那么您可能不想将所有这些数据合并到第二个应用程序的上下文中,因此 Apple 添加了下一个选项。
  2. Persistent history tracking 允许您过滤第一个应用程序对数据库所做的更改,并且仅将与当前视图或 FRC 相关的更改导入到第二个应用程序的上下文中。