gpt4 book ai didi

core-data - NSFetchedResultsController 错过了合并 NSManagedObjectContext 的更新

转载 作者:行者123 更新时间:2023-12-04 16:01:31 25 4
gpt4 key购买 nike

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

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

我在这里缺少什么?

最佳答案

我遇到了这个问题,看来我已经解决了。我不知道我到底做了什么。我的意思是我做了几件事但不知道,哪一件成了解决方案。所以我将简单描述...

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

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

  • 1 & 3 看起来更像是某种“魔法”,所以我认为你应该先尝试遵循 2。希望这会帮助你。

    关于core-data - NSFetchedResultsController 错过了合并 NSManagedObjectContext 的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6197330/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com