为什么我应该在分层ViewController结构中使用NSFetchedResultsController?

时间:2014-05-27 13:09:41

标签: ios objective-c core-data nsfetchedresultscontroller

我搜索了一下,却找不到我真正想要的答案。简单的场景:

{p> TableViewController NSArray beers。如果我选择单元格,则应显示带有beer details的详细视图。现在使用CoreData存储啤酒。

RootViewController中,我使用NSFetchedResultsController来获取所有啤酒。

现在我的问题是:我应该将目的地的啤酒属性设置为选定的啤酒,还是应该创建一个新的NSFetchedResultsController并使用一组执行全新的提取向上NSPredicate

区别在哪里?

2 个答案:

答案 0 :(得分:2)

嗯...

对我而言,我认为最重要的因素是数据是否会发生变化。

NSFetchedResultsController适用于执行提取等...但在处理更改的CoreData实体时它会自行处理。

当在后台线程(即来自网络请求等)上更新CoreData模型时,NSFetchedResultsControllerDelegate方法用于更新表/集合视图。

如果你的模型根本没有改变,那么我只需要传递beer对象并使用该对象的属性。

如果模型确实发生了变化,那么使用NSFRC及其委托方法来执行新的提取。

答案 1 :(得分:2)

如果您已经在RootViewController中保留了所选对象,并且它具有您将在detailViewController中显示的所有属性,那么我认为没有必要为detailVC设置NSFetchedResultController。您可以在prepareForSegue左右将对象传递给详细信息。

使用NSFetchedController的重点是,如果您使用Apple CoreDataTableViewController,则不必更新tableview数据源数组,并在列表中的每次更改时重新加载行/表} template。