我搜索了一下,却找不到我真正想要的答案。简单的场景:
{p>TableViewController
NSArray
beers
。如果我选择单元格,则应显示带有beer details
的详细视图。现在使用CoreData
存储啤酒。
在RootViewController
中,我使用NSFetchedResultsController
来获取所有啤酒。
现在我的问题是:我应该将目的地的啤酒属性设置为选定的啤酒,还是应该创建一个新的NSFetchedResultsController
并使用一组执行全新的提取向上NSPredicate
?
区别在哪里?
答案 0 :(得分:2)
嗯...
对我而言,我认为最重要的因素是数据是否会发生变化。
NSFetchedResultsController
适用于执行提取等...但在处理更改的CoreData实体时它会自行处理。
当在后台线程(即来自网络请求等)上更新CoreData模型时,NSFetchedResultsControllerDelegate
方法用于更新表/集合视图。
如果你的模型根本没有改变,那么我只需要传递beer
对象并使用该对象的属性。
如果模型确实发生了变化,那么使用NSFRC
及其委托方法来执行新的提取。
答案 1 :(得分:2)
如果您已经在RootViewController
中保留了所选对象,并且它具有您将在detailViewController中显示的所有属性,那么我认为没有必要为detailVC设置NSFetchedResultController
。您可以在prepareForSegue左右将对象传递给详细信息。
使用NSFetchedController
的重点是,如果您使用Apple CoreDataTableViewController
,则不必更新tableview数据源数组,并在列表中的每次更改时重新加载行/表} template。