尝试继承UIContextMenuConfiguration的Xcode错误

问题描述

尝试子类化uicontextmenuconfiguration时出现Xcode编译器错误

以下是重现问题的简单代码

@available(iOS 13.0,*)
class DateDifferenceContextMenu: uicontextmenuconfiguration {
    init(indexPath: IndexPath,dateDifference: Int) {
        super.init(identifier: nil,previewProvider: nil,actionProvider: nil)
    }
}

错误显示为:

必须调用超类'uicontextmenuconfiguration'的指定初始化程序。

我的超级调用与指定的初始化程序匹配。 怎么了?

解决方法

我的超级调用与指定的初始化程序匹配。

不,它调用convenience初始化程序。

将代码更改为仅调用super.init(),或者将初始化程序设置为convenience。即:

class DateDifferenceContextMenu: UIContextMenuConfiguration {
    // use either this
    convenience init(indexPath: IndexPath,dateDifference: Int) {
        self.init(identifier: nil,previewProvider: nil,actionProvider: nil)
    }

    // or this
    init(indexPath: IndexPath,dateDifference: Int) {
        super.init()
    }

}