2011-02-02 79 views
0

如果NSFetchedResultsControllerDelegate正在处理更新(例如删除项目) 并且用户同时滚动UITableView。NSFetchedResultsController在滚动时更新

如果UITableView需要访问正被删除的提取请求项,会发生什么情况? 我应该在cellForRowAtIndexPath中测试它,以及如何?

还是不可能发生?

+0

做了一些测试后,似乎有必要锁定NSFetchedResultsController的NSManagedObjectContext,因此我们确信在cellForRowAtIndexPath正在读取它时没有更新它。任何人都可以证实? – CodeFlakes 2011-02-02 15:12:01

回答

2

这不是问题。核心数据和表格视图处理这个。

只要确保在插入和/或删除托管对象后更新了表格视图。

最简单的方法是将表格视图reloadData放在NSFetchedResultsControllerDelegate方法controllerDidChangeContent:中。

要做更有创意的东西,比如在表格中放入或放出动画行,请查看NSFetchedResultsControllerDelegate Protocol Reference的典型使用部分中的锅炉板代码。

+0

虽然使用`reloadData`将会起作用,因此将它与'NSFetchedResultsController`一起使用会有点反效果,因为它会导致所有单元重新加载。这是一项昂贵的操作,尤其是当您的表格可能长达数百个单元格时(如聊天对话)。 – alexgophermix 2015-01-22 00:59:47