核心数据插入后 TableView 行不更新

Posted

技术标签:

【中文标题】核心数据插入后 TableView 行不更新【英文标题】:TableView rows not updating after core data insert 【发布时间】:2014-12-15 16:18:02 【问题描述】:

我对快速编程很陌生。我一直在玩这个,但我没有得到任何地方所以在这里问。

我有一个表格视图,我可以将数据从 CoreData 加载到视图中,这没问题。我在顶部有一个添加按钮,用于连接到一个新的表格视图,其中有一长串可供他们选择的选项。此表格视图也可以正常工作,并包含一个搜索栏。 当用户从第二个 tableview 中选择一个项目行时,它将该项目插入 CoreData 并返回到第一个 tableview。这就是我的问题所在,数据不会在可见视图上更新。

我调用 tableview.reloaddata() 并且我可以看到我的代码使用新查询调用 fetchedResultsController,该查询将返回新数据。但是代码永远不会到达 cellForRowAtIndexPath 函数,因此可见数据视图永远不会改变。它保持与按下添加按钮时可见的相同显示。

可见数据如何更新?我错过了什么?

【问题讨论】:

【参考方案1】:

当使用NSFetchedResultsController 时,如果您希望它“自动”更新表格视图的内容,那么您需要确保几件事...

    您必须成为NSFetchedResultsControllerDelegate 并实现更新表视图所需的方法。这些内容很长,可以在Ray Wenderlich website 上找到。这里的代码是用 Objective-C 编写的,但是转换成 Swift 相当容易。

    您需要做的第二件事是确保核心数据更新在后台线程上完成。上面链接的网站再次显示了这一点。

完成此操作后,您实际上不需要运行 [tableview reloadData],因为获取的结果控制器方法将为您管理一切。

【讨论】:

Fogmeister,非常感谢您在上面的指点。他们帮助我指出了根本问题,帮助我解决了我对这个问题缺乏了解的问题。这实际上是我如何处理 FetchedResultsController 的问题。

以上是关于核心数据插入后 TableView 行不更新的主要内容,如果未能解决你的问题,请参考以下文章

行插入/删除后无法调整 TableView contentOffset

从 CloudKit 检索新数据后更新 tableView 数据

使用核心数据和数组从 TableView 中插入和删除行

登录时多个用户访问的核心数据值(iOS Swift)

核心数据:如何从警报中更新 TableView 字段?

Tableview 中的 Xcode 核心数据