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