0

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

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

var restorationIdentifier: String?

我尝试用以下方法覆盖它:

class MyViewController : UIViewController {

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

编译器对我大喊:

restorationIdentifier带有 Objective-C 选择器 的getter与来自具有相同 Objective-C 选择器的超类的restorationIdentifiergetter 冲突 restorationIdentifierUIViewController

我该如何克服呢?

4

1 回答 1

1

您没有定义 setter,这使其成为只读属性。这段代码对我有用:

override var restorationIdentifier: String? {
    get {
        return NSStringFromClass(self.dynamicType).componentsSeparatedByString(".").last!
    }
    set(value) {
        super.restorationIdentifier = value
    }
}
于 2016-02-08T11:48:07.667 回答