NSFetchedResultsController 对象不是最新的

Posted

技术标签:

【中文标题】NSFetchedResultsController 对象不是最新的【英文标题】:NSFetchedResultsController objects not up to date 【发布时间】:2012-12-29 18:00:20 【问题描述】:

我有一个带有 tablview 的视图控制器,它显示来自 NSFetchedResultsController 的数据,这很好,运行良好。

FRC 中的每个对象都代表一个已从服务器下载或尚未从服务器下载的文件。当用户点击一行时,应用程序会检查文件是否已下载,如果没有下载,则更新对象以标记它已下载。当用户再次点击该行时,它应该知道它已被下载,并打开文件。

但是,发生的事情是文件已下载,并且对象正在更新,但是当我再次点击该行时,FRC 的对象版本尚未更新以反映新的更改,所以它不认为该文件已下载,因此再次下载。

我需要重新获取 FRC 中的数据还是我做错了什么? 谢谢

【问题讨论】:

您是否在后台线程中更新对象?那么这个问题和解决方法可能会有所帮助:***.com/questions/14018068/…. 所有更改都在同一个后台线程中执行,使用 [context performBlock:] 或 [context performBlockAndWait:] 但是 FRC 正在主线程上工作?您是否为背景 MOC 使用嵌套的子上下文? 我愿意。我发现了这个问题。这不是线程的事情(尽管我确实需要检查这样的事情)。我在其他地方犯了一个错误,它创建了不相关的随机对象,所以我的 FRC 返回了错误的对象,当其他对象更新时,FRC 没有更新,因为它不知道它们:( 【参考方案1】:

原来这是我自己的错误。我在其他地方遇到了一个问题,导致创建了新对象,因此 FRC 返回了错误的对象。然后当正确的对象被更新时,FRC 并不知道它,因为它引用了错误的对象

【讨论】:

以上是关于NSFetchedResultsController 对象不是最新的的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 应用程序中调用 performFetch 后,是不是需要手动更新表视图?