子类NSManagedObject子类

时间:2016-02-24 18:41:28

标签: ios swift core-data nsmanagedobject

假设我有一个NSManagedObject子类Instrument,我想将该子类子类化为Guitar之类的东西。这有一个共同的做法吗?它似乎不像NSObject的子类化那么简单。

2 个答案:

答案 0 :(得分:3)

对于托管对象子类,子类/父类关系 对应于的子实体/父实体关系 核心数据实体。

如果您将“吉他”的“父实体”设置为“乐器” 核心数据模型检查器然后创建托管对象子类 在Xcode中,你会得到

// Instrument.swift:
class Instrument: NSManagedObject {

// Insert code here to add functionality to your managed object subclass

}

// Guitar.swift:
class Guitar: Instrument {

// Insert code here to add functionality to your managed object subclass

}

有关详细信息,请参阅“实体继承”部分 在Core Data Programming Guide

  

实体继承以类继承的方式工作,并且出于同样的原因也很有用。如果您有许多相似的实体,则可以将公共属性分解为一个超级实体,也称为父实体。

还要注意

  

请注意

     

使用SQLite持久性存储时要小心实体继承。从另一个实体继承的所有实体都将存在于SQLite的同一个表中。 SQLite持久性存储设计中的这个因素可能会产生性能问题。

答案 1 :(得分:0)

这样做没有错:

class Instrument: NSManagedObject {
  @NSManaged var name: String
}

class Guitar: Instrument {
  @NSManaged var numberOfString: NSNumber
}