ios - 由一对多关系创建的访问器方法是否与 NSFetchedResultsControllers 一样好?

标签 ios uitableview core-data nsfetchedresultscontroller

我的问题与这里的问题类似:

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/

相关文章:

ios - 扩展 JSONDecoder 以允许基于端点以不同方式序列化模型

ios - 在 Apple App Store 中提交应用程序之前,是否可以使用 PayPal Live Credentials(客户端 ID 和沙盒 ID)测试 iOS 应用程序?

ios - 如何在 Objective-C 中与自定义类的 init 方法中的委托(delegate)进行通信

ios - 在编辑模式下将图像添加到 UITableViewCell 未正确对齐

ios - 无法将 UITableViewDataSource 与自定义单元格一起使用

ios - 快速更改导航栏颜色时出现覆盖

ios - 运行第二个单元测试时核心数据实体名称为零

core-data - 使用属性搜索实体时的核心数据 SubEntitiesByName

ios - 如何替换 coreData iOS 中的 abort() 函数

ios - 如何将一个 IBOutlet 连接到容器 View Controller 中的 TableView Controller