如何使用NSFetchedResultsController重新启动查询

时间:2009-05-21 02:00:30

标签: iphone cocoa-touch core-data

我正在完成核心数据教程,它建议尝试转换为使用NSFetchedResultsController。所以我得到它以便我可以查询现有数据,但是当我在开头添加一行时,tableView:cellForRowAtIndexPath调用NSFetchedResultsController.objectAtIndexPath,但仍然返回旧的第0个对象而不是新的第0个对象。我需要做些什么来清理这些数据吗?

3 个答案:

答案 0 :(得分:2)

还没有人回答,所以我会加上我的猜测。看起来this link可能是相关的。有人建议,调用这两种方法中的任何一种都应该得到更新:

-[NSManagedObjectContext processPendingChanges]
-[NSManagedObjectContext save] 

也许documentation for NSManagedObjectContext会很有用。

答案 1 :(得分:2)

Naaf提供的链接中有一条线索。事实证明,在执行保存之后,我需要再次调用 - [NSFetchedResultsController performFetch]。

答案 2 :(得分:2)

您是否将视图控制器设置为获取结果控制器的委托并实现了NSFetchedResultsControllerDelegate protocol?如果是这样,您不必再次执行获取,获取的结果控制器将调用委托方法以响应更改。

(请注意NSFetchedResultsController documentation关于表视图数据源方法实现的注意事项。)