【问题标题】:`NSFetchedResultsController` not refreshing when updating relationship from child context`NSFetchedResultsController` 从子上下文更新关系时不刷新
【发布时间】:2015-07-16 20:29:09
【问题描述】:

如果我在子上下文中对托管对象进行更改然后保存该上下文,如果更改仅针对该对象的关系,则不会刷新。除了更新所述对象的属性之外,还有其他解决方案吗?

【问题讨论】:

标签: ios objective-c core-data nsfetchedresultscontroller


【解决方案1】:

您是否尝试在合并更改后在上下文中调用-processPendingChanges?苹果的文档状态

直到控制器的托管对象上下文收到 processPendingChanges 消息后,更改才会反映。

显然,这在 MacOS 应用程序的事件循环结束时被调用,但不清楚或何时在 iOS 上调用。

另外,请确保您在 NSFetchedResultsControllerDelegate 中至少实现了一种更改跟踪方法,否则您将不会跟踪上下文的任何更改。再次来自 Apple:

委托必须至少实现一种变更跟踪委托方法才能启用变更跟踪。提供 controllerDidChangeContent: 的空实现就足够了。

【讨论】:

  • 上下文在哪个队列上? performBlockAndWait: 执行上下文队列上的块,这可能不是主要的。您确定要等到块完成吗?另外,您如何获得对上下文的更改?您是在 FRC 上调用 performFetch: 还是使用委托回调方法?
  • 此问题不相关。 Core Data 只是不传播来自关系的更改 - 信不信由你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 2014-06-11
相关资源
最近更新 更多