单个 fetchedResultsController 中的不同实体类型?
Posted
技术标签:
【中文标题】单个 fetchedResultsController 中的不同实体类型?【英文标题】:different entity types in a single fetchedResultsController? 【发布时间】:2009-08-03 02:30:23 【问题描述】:我有一个 UITableView,它显示两种不同的实体类型——每一行可以是 EntityA 或 EntityB。 cellForRowAtIndexPath 查看类类型并确定如何创建单元格。
我正在使用 Core Data 持久化我的对象,并希望使用 fetchedResultsController 来管理这个 tableview,因为它具有内存管理的好处。但是,我无法找到一种方法来创建可以获取多种类型实体的 fetchedResultsController。因为 fetchedResultsController 初始化器接受一个 NSFetchRequest,而后者只允许识别单个实体,所以我认为我想做的事情是不可能的。
假设不是,我还有什么选择?我可以做类似单表继承的事情,创建一个合并我的两个实体的特征的实体模型(它们是相似的)吗?这会增加我的代码的复杂性并显着削弱打字,但用户永远不会知道其中的区别。
欢迎所有建议。
谢谢!
/afb
【问题讨论】:
【参考方案1】:没有真正的方法可以使用这个类来克服每个 NSFetchResultsController 的 1 个实体。
但是,如果您仍然想享受使用这个处理大量数据的类的好处,您可以创建两个或多个 NSFetchedResultsController 并使用 UITableViewDataSourceProtocol 的方法在它们之间切换。如果您计划为每个实体使用一个部分,这尤其容易。
【讨论】:
【参考方案2】:您可以在一个提取请求中轻松完成此操作。只需使用实体继承。让 EntityA 和 EntityB 都是某个抽象实体的子类,比如 EntityX。然后将获取请求的 NSEntityDescription 设置为 EntityX。不确定如何在谓词中为某些子实体指定属性键。
【讨论】:
以上是关于单个 fetchedResultsController 中的不同实体类型?的主要内容,如果未能解决你的问题,请参考以下文章
numberOfRowsInSection 中 fetchedResultsController 的奇怪行为
FetchedResultsController 中没有部分
如何将对象从 fetchedResultsController 到 Plist?
fetchedResultsController 对象的表视图部分