Core data 从初始值设定项引用类级属性

Core data 从初始值设定项引用类级属性,core-data,swift,Core Data,Swift,我有一个NSManagedObject子类,其初始值设定项如下: class Item: NSManagedObject { convenience init(managedObjectContext: NSManagedObjectContext) { let entityDescription = NSEntityDescription.entityForName(preferredEntityName, inManagedObjectContext: manage

我有一个
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.")
    }

}
编译器说
没有名为
preferredEntityName
的成员。我知道我可以将它引用为
Item.preferredEntityName
,但在这种情况下,它对子类不起作用


我如何从初始值设定项中引用
preferredEntityName
,使其也适用于
Item
的子类?

我简化了
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)
    }

}

由于Swift没有抽象概念,所以最接近的方法是使用协议:现在,这不是很有帮助。为什么我不能在调用
super.init()
之前引用一个类属性?哦,很抱歉……你能告诉我你想用这个项目类实现什么吗?您有一个未在此类中实现的属性,并且希望子类实现它。当您在Item类中运行init时,您希望为preferredEntityName打印什么?很抱歉,我不清楚。我已经编辑了这个问题,并试图更具体一些。基本上,我希望每个子类都有自己的实体名称并继承初始值设定项,而不需要一次又一次地重新实现它。只要在子类中有一个init,该子类调用以preferredEntityName作为参数的Item类init方法。子类将不会有任何其他代码,它只是提供preferredEntity的值,而preferredEntity在Item类上下文中没有任何值,因为它没有在那里初始化。我已经更新了上面的代码。