重置上下文不会触发 fetchResultedController

Posted

技术标签:

【中文标题】重置上下文不会触发 fetchResultedController【英文标题】:reset context does not fire fetchResultedController 【发布时间】:2015-05-19 15:32:30 【问题描述】:

我将fetchResultedController 绑定到一个上下文,即reset-ed。

在它之前我已经向这个上下文添加了一条记录,并且didChangeObject.Insert changeType 调用,但在reset 之后我预计didChangeObject 将被.Delete 调用changeType ,但它没有发生。

知道如何触发以接收带有.Delete 参数的呼叫吗?

【问题讨论】:

【参考方案1】:

如果您查看 NSFetchedResultsController 文档,有一个关于“处理对象无效”的部分说明如下,

当托管对象上下文通知获取结果控制器时 单个对象无效,控制器会处理这些 作为已删除的对象并发送适当的委托调用。

托管对象上下文中的所有对象都可能是 同时作废。 (例如,由于调用 重置,或者如果从持久存储中删除存储 协调员。)发生这种情况时,NSFetchedResultsController 不会 使所有对象无效,也不发送单独的通知 对象删除。相反,您必须调用 performFetch: 来重置 控制器的状态然后重新加载表视图中的数据 (重新加载数据)。

https://developer.apple.com/library/prerelease/ios/documentation/CoreData/Reference/NSFetchedResultsController_Class/index.html

正如文档所说,如果上下文被重置或上下文被释放,则不会调用任何单独的通知或委托方法。所以,你的工作就是自己调用 performFetch 并重新加载接口。

【讨论】:

以上是关于重置上下文不会触发 fetchResultedController的主要内容,如果未能解决你的问题,请参考以下文章

使用上下文和观察更改模型时,Flutter Provider 不会触发重建

当在角度 4 中触发事件时,将属性的值从指令重置为默认值

如何在 Jupyter Notebook 中使用 django 3.0 ORM 而不会触发异步上下文检查?

拖动时停止 OnLongClickListener 触发

QSignalMapper 和 QAction 的问题永远不会触发 Slot

尽管状态发生了变化,但自定义钩子不会触发组件重新渲染