2012-06-25 87 views

回答

1

是的。你可以拥有一个拥有“东西”的人......

3

抽象实体并不意味着被实例化。这就是为什么你 不能 创建这种关系。你可以做的是创建一个关系,其中的实体是从一个抽象实体继承的。

Apple's docs

甲关系指定目的地处的 对象的实体,或父实体。这可以与 源(反射关系)中的实体相同。关系不一定是同质的 。如果员工实体有两个子实体,如经理 和Flunky,那么给定部门的员工可能由 员工组成(,假设员工不是抽象实体),经理, 流氓或其任何组合。

编辑: 显然,你可以创建这样的关系(使子实体会继承的关系为好)......

如果定义了实体继承层次结构(见“实体 继承“),当您将超实体指定为获取请求的实体时,该请求会返回超实体和子实体的所有匹配实例。在某些应用程序中,您可能会将超实体指定为抽象(请参阅“抽象实体”)。若要获取匹配抽象实体 的所有具体子实体的实例,您将用于提取规范的实体设置为摘要 实体。在“抽象实体”中描述的域的情况下,如果 您使用图形实体指定提取请求,则提取返回 匹配Circle,TextArea和Line的实例。

也看到这个答案:Core Data: Abstract Entity in Fetch Request

+0

那就是断章取义。 “假设员工不是抽象实体”用括号编写,因为如果员工是抽象的,它就不能出现在员工关系中。事实上,本段证实这是可能的,因为它说关系不一定是同质的。在很多情况下,我使用抽象实体作为关系中的目标。 –

+0

我最初的理解与Alladinian的理解是一样的,尽管我也和Paul de Lange一样对开发者进行了交流。所以如果我们有一个Person(抽象)与Employee具有一对多关系。这意味着员工可以要求其人员需要创建人员。这将会起作用,因为Objective-C不会像Java一样强制将类抽象为抽象类,但它是正确的事情吗?那么为什么麻烦将Person定义为抽象? – ADude

+0

员工有很多人?多么令人困惑的例子......无论如何,你需要考虑实体而不是类。它是一个抽象实体而不是抽象类。你的课只是实体的程序化表示。 Obj-C中没有抽象类,不像Java中提到的那样。它在文档中解释了为什么要使用此功能。 –