为restorationIdentifier提供默认值

时间:2016-02-08 10:55:41

标签: ios swift state-restoration

我想覆盖restorationIdentifier变量,以便所有继承自MyViewController的视图控制器都将restorationIdentifier设置为其类名。但是,似乎Swift不允许我这样做。

我想要重载并提供默认实现的var定义为:

var restorationIdentifier: String?

我尝试用:

覆盖它
class MyViewController : UIViewController {

    override var restorationIdentifier: String? {
        return NSStringFromClass(self.dynamicType).componentsSeparatedByString(".").last!
    }
}

编译器对我大喊:

  

使用Objective-C选择器获取restorationIdentifier   restorationIdentifier与getter冲突   来自超类restorationIdentifier的{​​{1}}   相同的Objective-C选择器

我怎样才能克服这个?

1 个答案:

答案 0 :(得分:1)

您没有定义setter,这使它成为只读属性。这段代码适合我:

override var restorationIdentifier: String? {
    get {
        return NSStringFromClass(self.dynamicType).componentsSeparatedByString(".").last!
    }
    set(value) {
        super.restorationIdentifier = value
    }
}
相关问题