NSFetchedResultsController错过了对合并的NSManagedObjectContext的更新

thr*_*sty 6 merge core-data nsfetchedresultscontroller nsmanagedobjectcontext

我有两个托管对象上下文,A和B.这两个上下文通过在保存(通过监视NSManagedObjectContextDidSaveNotification)时将更改从一个更改为另一个来保持同步.我已经确认A和B的更改正在合并.

我有NSFetchedResultsController对B 的监视更新.我发现A的某些更新不会导致在B.上触发nsfrc.当创建一个新的托管对象并使用nsfrc正在寻找的属性(在B上)添加到A时,在B合并A的保存更改后,nsfrc会触发.但是,如果A(和B)上已经存在托管对象,我修改了对象并保存了A,而我可以看到B正在合并保存通知中的更改A,nsfrc监控B不会触发.

我在这里错过了什么?

kpo*_*wer 1

我遇到了这个问题,而且似乎我已经解决了。我不知道我到底做了什么。我的意思是我做了几件事,但不知道哪一件成为解决方案。那么我就简单描述一下...

我重构了我的代码以遵循在官方文档和一些论坛中找到的一些“提示”:

  1. 如果您NSManagedObjectContext在另一个线程中进行管理,则应该在该线程中创建它,而不是以某种方式传递到那里。
  2. 您应该仅在主线程中添加观察者(以获取合并的保存通知) - 这样它们也将合并到主线程中。
  3. (可选,但我做到了)您可以尝试仅在主线程中保存上下文,即使它是在后台线程中创建和管理的。

1 和 3 看起来更像是一些“魔法”,所以我认为你应该先尝试遵循 2。希望对你有帮助。