如何使用相同的超类

时间:2015-04-29 16:29:22

标签: ios objective-c core-data

我有两个类MammalsFish,它们都继承自一般超类Animals。我想使用核心数据存储我的所有MammalsFish,因此我们将它们都作为NSManagedObject的子类。所以,当我想要获得所有MammalsFish时,我只需要执行几次获取请求。

我的问题是如何处理Animals超类。

  • 它的属性和方法显然是由两个子类使用的,所以它应该是一个NSManagedObject吗?
  • 如果是这样,MammalsFish是否需要一个显式的NSManagedObject子类,因为它们已经是Animals的子类?
  • 这种方法有缺陷吗?

对不起,如果这是一个超级基本的问题,特别是如果答案只是"是的;否&#34。其中一个答案here警告不要在数据模型中使用继承,因此我担心。

2 个答案:

答案 0 :(得分:1)

制作Animals的{​​{1}}子类。 制作NSManagedObject的{​​{1}}和Mammals子类。

答案 1 :(得分:1)

自己决定你的继承模型是否会在未来打结。但是直接回答你的问题,你的继承树看起来就像......

 NSManagedObject -> Animal -> Mammals 
                           -> Fish

所以

@interface Animal : NSManagedObject

@interface Fish : Animal

请注意,如果您需要在将来升级模型并仍然依赖于现有数据,Core-Data无法完成复杂的重新排列。并非不可能,只是不容易。