单个fetchedResultsController中的不同实体类型?

时间:2009-08-03 02:30:23

标签: uitableview iphone-sdk-3.0 core-data persistence

我有一个UITableView,它显示两种不同的实体类型 - 每行可以是EntityA或EntityB。 cellForRowAtIndexPath查看类类型并确定如何创建单元格。

我使用Core Data持久保存我的对象,并且由于内存管理的好处,我希望使用fetchedResultsController来管理此tableview。但是,我无法找到一种方法来创建一个可以获取多种类型实体的fetchedResultsController。因为fetchedResultsController初始化器采用NSFetchRequest,而后者只允许识别单个实体,所以我不认为我想做什么。

假设不是,我有什么替代方案?我可以做一些像单表继承,创建一个实体模型,合并我的两个实体的功能(它们是相似的)?这会增加我的代码的复杂性并显着削弱打字,但用户永远不会知道差异。

欢迎所有建议。

谢谢!

/ AFB

2 个答案:

答案 0 :(得分:4)

使用此类没有真正的方法来克服每个NSFetchResultsController的1个实体。

但是,如果您仍然希望享受使用此类处理大型数据集的好处,则可以创建两个或更多NSFetchedResultsControllers并使用UITableViewDataSourceProtocol的方法在它们之间切换。如果您计划为每个实体使用一个部分,这一点尤其容易。

答案 1 :(得分:1)

您可以在一次获取请求中轻松完成此操作。只需使用实体继承。 EntityA和EntityB都是某些抽象实体的子类,比如EntityX。然后将获取请求的NSEntityDescription设置为EntityX。但不确定如何为谓词中的某些子内部指定属性键。