刷新 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 和UITableView
s 时使用NSFetchedResultsController
。 raywenderlich 有一个关于如何在 Core Data 中使用该类的教程。
首先,它允许您处理UITableView
中显示的大量数据。特别是,如果对于您使用的NSFetchRequest
,您设置了批量大小,则数据将以“批量”形式检索。例如,前 10 个。然后,如果您滚动其他 10 个,依此类推...
此外,您可以使用NSFetchedResultsControllerDelegate
类(Reference NSFetchedResultsControllerDelegate)免费处理数据更改(更新、插入或删除)。
希望对你有帮助。
【讨论】:
以上是关于刷新 CoreData 表?的主要内容,如果未能解决你的问题,请参考以下文章
从 CoreData 刷新 NSTreeController
在 CoreData 中更新项目不会刷新 tableView
iOS 16 中 CoreData 托管对象发生变化但其衍生 (Derived) 属性在 SwiftUI 中不刷新的解决
iOS 16 中 CoreData 托管对象发生变化但其衍生 (Derived) 属性在 SwiftUI 中不刷新的解决