Ios 如何使两个NSManagedObject类具有相同的超类

Ios 如何使两个NSManagedObject类具有相同的超类,ios,objective-c,core-data,Ios,Objective C,Core Data,我有两个类,哺乳动物和鱼,它们都继承自一般的超类,动物。我想使用核心数据存储我所有的哺乳动物和鱼,因此我将它们都设置为NSManagedObject的子类。因此,当我想要获取所有的哺乳动物和鱼时,我只需要执行几个获取请求 我的问题是如何处理动物超类 它的属性和方法显然被这两个子类使用,所以它也应该是NSManagedObject吗 如果是这样的话,哺乳动物和鱼是否甚至需要一个明确的NSManagedObject子类,因为它们已经是动物的子类 这种方法有缺陷吗 抱歉,如果这是一个超基本的问题,

我有两个类,
哺乳动物
,它们都继承自一般的超类,
动物
。我想使用核心数据存储我所有的
哺乳动物
,因此我将它们都设置为NSManagedObject的子类。因此,当我想要获取所有的
哺乳动物
时,我只需要执行几个获取请求

我的问题是如何处理
动物
超类

  • 它的属性和方法显然被这两个子类使用,所以它也应该是NSManagedObject吗
  • 如果是这样的话,
    哺乳动物
    是否甚至需要一个明确的NSManagedObject子类,因为它们已经是
    动物
    的子类
  • 这种方法有缺陷吗

抱歉,如果这是一个超基本的问题,特别是如果答案只是“是;否”。其中一个答案警告不要在数据模型中使用继承,因此我感到担心。

Make
Animals
子类
NSManagedObject

哺乳动物
动物的子类

自己决定你的遗传模式是否会让你在未来陷入困境。但在直接回答你的问题时,你的继承树看起来像

 NSManagedObject -> Animal -> Mammals 
                           -> Fish
所以

@界面动物:NSManagedObject

@界面鱼:动物


如果您将来需要升级您的模型,并且仍然保留现有数据,那么请注意,
核心数据
无法很好地进行复杂的重新排列。并非不可能,只是并不总是那么容易。

谢谢您的回复!因此,除了在未来对模型进行修改外,@shosti在相关问题中的警告在这里不成问题吗?(它是:“如果使用SQL后端,请不要在数据模型中使用继承。由于SQL后端的实现,它的性能和空间特性非常糟糕”)这可能取决于模型的最终大小。我以前从未见过这样的建议。我可能需要看视频:-),但我有几个基于CD的项目,使用三层继承,性能对我来说不是问题,超过1000个对象。当您描述根类与超类目的地的关系时,它可能很有用,例如,您可能有一个名为Animals的一->多关系,它与动物目的地的关系,即熊->鳟鱼、兔子、松鼠、小龙虾OK,很高兴知道。谢谢如果性能确实成为一个问题,请注意,您不需要让实体相互继承(这就是为所有实体创建一个巨大表的原因),以便为它们创建一个公共基类。