为 Objective-C class 重写 Swift 中的初始化方法,但存在命名冲突

Overriding init method in Swift for Objective-C class with naming conflict

我正在尝试从 Bluemix 上的移动数据 SDK 子class IBMDataObject。在 Objective-C 中编写的 IBMData 框架,所以我试图覆盖的 init 方法看起来像这样:

- (instancetype)initWithClass:(NSString *)classname;

在 Swift 中使用它,它被转换为:

init!(withClass classname: String!) {
    super.init(withClass: classname)
}

这一定与 Swift 中的命名约定检查冲突,因为我随后得到错误:

在 init 方法名称中包含单词 class 似乎会导致问题,因为自动修复会删除 withClass 并放入关键字 class.

我不确定是否有解决方法,也许是警告抑制?或者 IBMDataObject 初始化方法需要更改它的名称吗?

我遇到了同样的错误,通过更改覆盖方法修复了它:

required override init() {
    super.init(withClass: "Item")
}

因为 init 方法需要接收字符串参数。 <<(NSString *)类名;>>

还将初始化方法更改为:

init(className: String){
    super.init(withClass: className)
}

希望对您有所帮助。