我有一个NSManagedObject
子类,其初始化程序如下:
class Item: NSManagedObject {
convenience init(managedObjectContext: NSManagedObjectContext) {
let entityDescription = NSEntityDescription.entityForName(preferredEntityName, inManagedObjectContext: managedObjectContext)
...
}
class var preferredEntityName: String {
fatalError("This property must be overridden.")
}
}
编译器说Item
没有名为preferredEntityName
的成员。我知道我可以将其引用为Item.preferredEntityName
,但在这种情况下,它不能用于子类。
我如何从初始值设定项中引用preferredEntityName
,以便它也适用于Item
的子类?
答案 0 :(得分:1)
我简化了Item
课程:
class Item {
init(entityName: String) {
// Do whatever you want with the entityName
// Do other common code for all Items
}
class var preferredEntityName: String {
fatalError("This property must be overridden.")
}
}
在您的子类中,只需在设置后传递preferredEntityName
:
class ShoppingCartItem: Item {
var preferredEntityClass = "ShoppingCartItem"
init() {
super.init(entityName:preferredEntityClass)
}
}