【问题标题】:Swift 4.2: Overriding 'restoreUserActivityState' must be as available as declaration it overridesSwift 4.2:覆盖“restoreUserActivityState”必须与它覆盖的声明一样可用
【发布时间】:2018-08-31 13:28:37
【问题描述】:

我正在尝试实现 Siri 快捷方式。为了处理它们,我必须重写 restoreUserActivityState 函数,但是当我将它重写到从 UIViewController 继承的类中时,会导致此错误:“重写 'restoreUserActivityState' 必须与它重写的声明一样可用”。我试图让我的班级和我的功能公开,但错误仍然存​​在。知道如何解决这个问题吗?

【问题讨论】:

  • 您能否提供一个无法编译的代码的最小示例?

标签: ios swift siri


【解决方案1】:

当你从一个超类重写一个被覆盖的方法时,你要确保你在子类中设置的方法比你继承的超类具有更高的访问级别。您可以使用 open 关键字。

例子:

class ViewController1: UIViewController {
    override func restoreUserActivityState(_ activity:NSUserActivity) {

    }
}

class ViewController2: ViewController1 {
    open override func restoreUserActivityState(_ activity: NSUserActivity) {

    }
}

希望能解决你的问题。

【讨论】:

  • 不幸的是,它没有用。我不知道为什么,因为您的代码示例完美运行。
猜你喜欢
  • 2018-03-08
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 2016-09-07
  • 2014-07-29
  • 2016-12-10
相关资源
最近更新 更多