如何解决核心数据:提取请求中的抽象实体
| 假设我有一个带有名为\“ Animal。\”的抽象实体的Core Data模型,然后,我还有许多从该抽象实体继承的其他实体:\“ Lion \”,\“ Dog \”,\“ Cat \”,等等。(我不是在开发Zoo程序,但是这个类比对于我正在解释的问题非常有用!) 我想知道的是:通过执行以下操作,我可以一次获取“所有动物”吗:NSFetchRequest *searchRequest = [[NSFetchRequest alloc] init];
[searchRequest setEntity:[NSEntityDescription entityForName:@\"Animal\" inManagedObjectContext:aContext]];
NSArray *matchedObjects = [aContext executeFetchRequest:searchRequest error:nil];
我了解在NSEntityDescription上有确定实体是否从另一个继承的方法。但是,有没有一种快速的方法来获取所有具有特定(抽象)类型的实体-在这种情况下为“动物”?
如果上述方法无效,那么最有效的方法是什么?谢谢!
解决方法
您绝对可以使用该方法。
从Apple的核心数据编程指南中:
实体继承的工作方式与类继承类似。并且出于相同的原因很有用。如果您有许多相似的实体,则可以将通用属性分解为超实体,也称为父实体。您可以在一个实体中定义它们,而不是在多个实体中指定相同的属性,并且子实体继承它们。例如,您可以定义一个具有firstName和lastName属性的子实体,以及继承这些属性的Employee和Customer子实体。
, 我做了类似的事情,但是那个实体不是抽象的。它是一个标准实体(没有实例),而我获取的其他实体都来自该实体。我还没有尝试使用抽象类,但是,查看文档似乎似乎不可能:
核心数据编程指南
您可以指定抽象实体
实体是抽象的-即
您将不会创建任何实例
该实体。您通常会
实体摘要(如果有数字)
全部代表的实体
(从)继承的专业化
不应本身的共同实体
被实例化。例如,在
绘图应用程序,您可能有
定义属性的图形实体
用于x和y坐标,颜色和
绘图范围。不过你永远不会
实例化图形。具体
图形的子实体可能是
圆,TextArea和线。
我的建议是使用抽象的Animal实体进行设置并尝试一下。如果它不起作用,则只需使Animal实体成为非抽象类(单词使我失望,那是我们所说的吗?也许“ concrete”更好?),您应该没事。如果有人使用抽象类完成了此操作,我会听到它的信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。