获取多个实体之间没有关系
Posted
技术标签:
【中文标题】获取多个实体之间没有关系【英文标题】:Fetch multiple entities with no relation between them 【发布时间】:2012-11-05 22:42:56 【问题描述】:我有一个包含多个实体的核心数据模型,每个实体对应一个视图控制器,用户为每个实体插入信息,例如:
轮胎(第一个实体)- 类型(第一个属性),成本(第二个属性)。 Glass(第二实体) - 颜色(第一属性)、尺寸(第二属性)、成本(第三属性)。
对于每个实体,我都有一个带有文本字段的 MVC,如果用户为每个实体插入信息,那么如果您按下轮胎按钮,您就会为其他实体插入一种轮胎、成本……等等。
当我只拉一个实体时一切顺利,我在文本字段中插入信息然后按保存,它很好地出现在我的 tableview 上!但是,正如您已经知道的,我希望将其余实体插入到我的 tableview 和不同部分中。
我尝试过“搞乱”“cellForRowAtIndexPath”,也在我的“fetchedResultsController”方法中使用“if´s”和“swich´s”,但没有成功。我在这里错过了什么?!?!?!
谢谢,对不起我的英语。
【问题讨论】:
【参考方案1】:您需要一个实体才能让您的NSFetchedResultsController
正常工作并利用其先进的内存和性能特性。
因此修改您的数据模型并创建一个新实体Item
,它是其他实体的抽象父实体。 (您可以在模型编辑器中分配父实体。)确保所有项目共享的属性(例如名称)属于父实体。这些应该是您希望在表格视图中显示的属性。
现在您可以为每个子实体添加唯一的NSString
或NSNumber
属性type
,并在NSFetchedResultsController
中轻松按此键排序。
来自 Apple 的 [核心数据编程指南][1]:
如果您定义实体继承层次结构(请参阅“实体继承”),当您将超实体指定为获取请求的实体时,该请求将返回超实体和子实体的所有匹配实例。在某些应用程序中,您可以将超实体指定为抽象的(请参阅“抽象实体”)。要获取抽象实体的所有具体子实体的匹配实例,请将要获取规范的实体设置为抽象实体。在“抽象实体”中描述的域的情况下,如果您使用 Graphic 实体指定提取请求,则提取将返回 Circle、TextArea 和 Line 的匹配实例。
因此,您获取所有Items
,按type
排序,然后为每个单元格确定类型并使用适当的属性填充文本标签。
【讨论】:
感谢您的回答蒙迪!。让我看看我是否理解,如果我错了,请纠正我,你是说我应该只有一个实体,它具有我之前在每个实体中想要的所有属性?但是如果(在表格视图中显示单元格时)我想区分产品“轮胎”和“玻璃”怎么办?我如何在 cellForRowAtIndexPath 内的 cell.textlabel.text 和 cell.detailtextabel.text 中管理它?谢谢。 感谢您的帮助 mundi,我将实施。以上是关于获取多个实体之间没有关系的主要内容,如果未能解决你的问题,请参考以下文章