16

我有一个具有 3 个实体的一级方程式比赛的数据模型:

  • RacingActor:抽象实体
  • Pilot:继承自 RacingActor
  • Team:继承自 RacingActor

在此处输入图像描述

如果我生成NSManagedObject子类来表示这些实体,则生成的代码根本不代表这种设计:

  • 一切都继承自NSManagedObject
  • 没有什么能阻止我实例化 RacingActor
  • Pilot 中的 team 属性是 typeNSManagedObject而不是 Team

这是预期的行为吗?我应该修复 Xcode 生成的代码吗?我错过了什么吗?

顺便说一句,我正在使用 Xcode 4.3.3

4

1 回答 1

12

Core Data 的核心是一个对象关系映射库。很久以前,它被称为企业对象框架,是 WebObjects 的一部分。

所以是的,Core Data 管理的任何持久对象的基础对象都是NSManagedObject,你可以对它们做任何你想做的事情。

在您的示例中,Team 和 Pilot 将共享一个公用表,您将能够使用查询一次检索 Teams 和 Pilots。这就是想法。

Objective-C 继承树(如果您使用自定义类)可以镜像您定义的模型,但它不需要。您可以创建一个自定义RacingActor类,将其用作自定义TeamPilot类的基类,或者您可以告诉模型RacingActor用于TeamPilot对象。您甚至可以为和/或如果您愿意定义一个完全不相关的基类(只要NSManagedObject是直接或间接的父类) 。TeamPilot

然后,您可以自由地在控制器或自定义数据类中实现业务逻辑中所需的特定行为。

于 2012-07-09T16:48:30.787 回答