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

时间:2014-12-15 16:18:03

标签: ios swift tableview

我对快速编程很新。我已经玩了一段时间,但我没有得到任何地方,所以问这里。

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

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

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

1 个答案:

答案 0 :(得分:1)

使用NSFetchedResultsController时,如果您想要"自动"更新tableview的内容然后有几件事你需要确保......

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

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

  3. 完成后,您实际上并不需要运行[tableview reloadData],因为获取的结果控制器方法将为您管理所有内容。