从初始化程序引用类级属性

时间:2014-12-18 11:28:04

标签: core-data swift

我有一个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的子类?

1 个答案:

答案 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)
    }

}