首页 > 解决方案 > Swift 4.2:覆盖“restoreUserActivityState”必须与它覆盖的声明一样可用

问题描述

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

标签: iosswiftsiri

解决方案


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

例子:

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

    }
}

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

    }
}

我希望,它可以解决你的问题。


推荐阅读