假设我有一个NSManagedObject子类Instrument
,我想将该子类子类化为Guitar
之类的东西。这有一个共同的做法吗?它似乎不像NSObject的子类化那么简单。
答案 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
}