我有一个UITableView,它显示两种不同的实体类型 - 每行可以是EntityA或EntityB。 cellForRowAtIndexPath查看类类型并确定如何创建单元格。
我使用Core Data持久保存我的对象,并且由于内存管理的好处,我希望使用fetchedResultsController来管理此tableview。但是,我无法找到一种方法来创建一个可以获取多种类型实体的fetchedResultsController。因为fetchedResultsController初始化器采用NSFetchRequest,而后者只允许识别单个实体,所以我不认为我想做什么。
假设不是,我有什么替代方案?我可以做一些像单表继承,创建一个实体模型,合并我的两个实体的功能(它们是相似的)?这会增加我的代码的复杂性并显着削弱打字,但用户永远不会知道差异。
欢迎所有建议。
谢谢!
/ AFB
答案 0 :(得分:4)
使用此类没有真正的方法来克服每个NSFetchResultsController的1个实体。
但是,如果您仍然希望享受使用此类处理大型数据集的好处,则可以创建两个或更多NSFetchedResultsControllers并使用UITableViewDataSourceProtocol的方法在它们之间切换。如果您计划为每个实体使用一个部分,这一点尤其容易。
答案 1 :(得分:1)
您可以在一次获取请求中轻松完成此操作。只需使用实体继承。 EntityA和EntityB都是某些抽象实体的子类,比如EntityX。然后将获取请求的NSEntityDescription设置为EntityX。但不确定如何为谓词中的某些子内部指定属性键。