子类化一个 NSManagedObject 子类
Posted
技术标签:
【中文标题】子类化一个 NSManagedObject 子类【英文标题】:Subclass an NSManagedObject subclass 【发布时间】:2016-02-24 18:41:28 【问题描述】:假设我有一个 NSManagedObject 子类 Instrument
,我想将该子类子类化以创建类似 Guitar
的东西。这有一个常见的做法吗?它似乎不像继承 NSObject 那样简单。
【问题讨论】:
你觉得它在哪些方面不简单? 【参考方案1】:对于托管对象子类,子类/父类关系 对应于子实体/父实体关系 核心数据实体。
如果您将“吉他”的“父实体”设置为“乐器” Core Data 模型检查器,然后创建托管对象子类 在 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 持久存储设计中的这一因素可能会产生性能问题。
【讨论】:
【参考方案2】:这样做没有错:
class Instrument: NSManagedObject
@NSManaged var name: String
class Guitar: Instrument
@NSManaged var numberOfString: NSNumber
【讨论】:
以上是关于子类化一个 NSManagedObject 子类的主要内容,如果未能解决你的问题,请参考以下文章
NSLog'd 时子类化的 NSManagedObject 不调用描述
将 NSManagedObject 子类化 Core Data 对象打印到控制台在 Swift 中返回空行