刷新 CoreData 表?

Posted

技术标签:

【中文标题】刷新 CoreData 表?【英文标题】:Refreshing CoreData Table? 【发布时间】:2012-05-07 23:06:33 【问题描述】:

我可以通过调用[nameoftableView reloadData];刷新任何非CoreData加载的tableView

但是当我在加载了 CoreData 的 TVC 上调用它时,它不会重新加载表。 这有什么不同吗?

如果我停止并再次启动应用程序,它会更新它的内容 - 以便它重新加载数据库,所以我知道它里面有更新的内容。

杰夫干杯

【问题讨论】:

reloadData 在刷新从 Core Data 填充的 UITableView 时对我有用。一定有其他事情发生。也许发布您调用 reloadData 的方法? 如果您使用的是 NSFetchedResultsController,请尝试将 executeFetch: 发送到您的 fetchedResultsController 实例。它很可能已经缓存了原始结果,需要重新获取新结果。 尝试在 viewWillAppear() 中重新加载 TableView 并在重新加载 TableView 之前从 CoreData 中获取 您好,我仍在处理这个问题 - 到目前为止,任何视图中的任何重新加载都不起作用,但是在查看 SQL 文件后,我知道应用程序正在存储数据,所以只需正确显示即可. 【参考方案1】:

没有细节很难知道发生了什么,但如果你使用简单的NSFetchRequest,我认为你需要执行查询并再次调用reloadData

一个简单的笔记

我建议你在处理 Core Data 和UITableViews 时使用NSFetchedResultsController。 raywenderlich 有一个关于如何在 Core Data 中使用该类的教程。 首先,它允许您处理UITableView 中显示的大量数据。特别是,如果对于您使用的NSFetchRequest,您设置了批量大小,则数据将以“批量”形式检索。例如,前 10 个。然后,如果您滚动其他 10 个,依此类推...

此外,您可以使用NSFetchedResultsControllerDelegate 类(Reference NSFetchedResultsControllerDelegate)免费处理数据更改(更新、插入或删除)。

希望对你有帮助。

【讨论】:

以上是关于刷新 CoreData 表?的主要内容,如果未能解决你的问题,请参考以下文章

从 CoreData 刷新 NSTreeController

CoreData 删除后的列表刷新

在 CoreData 中更新项目不会刷新 tableView

应用程序更新之间的 CoreData,表示默认数据刷新

iOS 16 中 CoreData 托管对象发生变化但其衍生 (Derived) 属性在 SwiftUI 中不刷新的解决

iOS 16 中 CoreData 托管对象发生变化但其衍生 (Derived) 属性在 SwiftUI 中不刷新的解决