实体具有某些共同属性时的模型结构
Posted
技术标签:
【中文标题】实体具有某些共同属性时的模型结构【英文标题】:Model structure when entities having some properties in common 【发布时间】:2015-03-06 06:54:00 【问题描述】:我在 Core Data 中有 2 个实体,它们有一些共同的属性。我必须在同一个列表视图中显示这两个实体。这样做的最佳做法是什么?我可以做一些继承的事情并将公共属性放在基类中吗?
【问题讨论】:
【参考方案1】:Core Data 支持继承。 打开您的核心数据模型并选择子实体。确保显示了实用程序窗格(Xcode 中的右上角按钮)并选择“显示数据模型检查器”(实用程序窗格中最右侧的图标)。
您可以在此处为您的实体选择父实体。父实体的所有属性都将在子实体中可用。
Apple documentation on Core Data inheritance【讨论】:
【参考方案2】:这样做的最佳做法是什么?
这取决于您需要建模的实体类型。例如,如果你有一个Cat
和一个Dog
,你应该在一个基本实体中移动共同的属性(比如Animal
或任何你想要的)。换句话说,您应该有这样做的理由,即实体之间存在某种关系。
我可以做一些继承的事情并将公共属性放在基类中吗?
当然可以。在模型中,您可以拥有如下的继承模式。
在哪里
在这里我要强调两点。
首先,您可以将基础实体设为抽象实体。这样你就不能创建这个实体的实例了。
根据文档。
你可以指定一个实体是抽象的——也就是说,你不会 创建该实体的任何实例。您通常创建一个实体 抽象,如果你有许多实体都代表 (继承自)一个公共实体的特化,它不应该 本身被实例化。例如,在绘图应用程序中,您 可能有一个为 x 和 y 定义属性的 Graphic 实体 坐标、颜色和绘图边界。但是,您永远不会实例化 图形。 Graphic 的具体子实体可能是 Circle、TextArea 和 Line。
其次,Core Data 将在后台创建一个包含您插入的所有属性的表。因此,如果您有很多属性,那么您将有很多列用于一个表。
【讨论】:
以上是关于实体具有某些共同属性时的模型结构的主要内容,如果未能解决你的问题,请参考以下文章