【问题标题】:Provide default value for restorationIdentifier为 restoreIdentifier 提供默认值
【发布时间】:2016-02-08 19:48:07
【问题描述】:

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

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

var restorationIdentifier: String?

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

class MyViewController : UIViewController {

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

编译器对我大喊:

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

我该如何克服这个问题?

【问题讨论】:

    标签: ios swift state-restoration


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 2014-07-28
      • 1970-01-01
      • 2010-12-20
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多