我的问题与此类似:
ResultsController to another ResultsController
ios上的典型应用程序结构是通过表视图深入查看数据,并且大量应用程序模型是分层的。例如,电影节可以有很多电影,可以有很多电影,可以有很多参加者。如果我们使用核心数据来表示此模型,那么我们可以使用NSFetchedResultsController
将电影填充到UITableView
。使用NSFetchedResultsController
极大地提高了性能和内存效率,并为观察底层数据的更改提供了内置支持。我想在我的项目中尽可能地利用这一点。
因此,如果我们有一个由这个甜蜜NSFetchedResultsController
支持的电影表,并且用户选择电影来查看其放映列表,我们可以传递该电影(NSManagedObject
的子类)到一个新的UITableViewController
并用电影的放映填充该表。
我的问题的核心不是“我该怎么做?”相反,它会询问NSFetchedResultsController
的好处是否与NSManagedObject
一起传播。我可以使用谓词中的事件构建一个新的结果控制器,但我不需要。如果我将Film对象传递给名为film
的变量,并且我的多对多关系被标识为screenings
,那么我相信我可以像这样获得与该电影相关的一组放映:
NSSet *filmScreenings = [film screenings];
如果我将该集合转换为数组,并将其用作支持我的新表格筛选的数据,我是否会失去NSFetchedResultsController
的好处?我的直觉告诉我是的,尤其是对监控变化的支持 - 但Apple的文档中的常见问题解答让我第二次猜测并向整个社区提问。查看问题in this FAQ,名为“我有从实体A到实体B的多对多关系......”
那么我应该使用那种访问器方法,还是应该构建一个新的NSFetchedResultsController
?
答案 0 :(得分:2)
通过执行此操作(例如批量提取和更改监控),您将失去NSFetchedResultsController
的好处,因为您将使用简单的NSArray
替换它。您最好的选择是将Film
传递给详情控制器,并使用NSFetchedResultsController
的谓词中的Film
构建NSFetchRequest
。