在Swift中覆盖具有命名冲突的Objective-C类的init方法

时间:2015-06-01 03:30:03

标签: swift ibm-cloud

我正在尝试从Bluemix上的Mobile Data SDK中继承http://127.0.0.1:5000/ringdown/handle?sorry=&stack=%2B17033145109。在Objective-C中编写的IBMDataObject框架,所以我试图覆盖的init方法如下所示:

IBMData

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

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

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

enter image description here

在init方法名称中使用单词class似乎会导致问题,因为自动修复会删除init!(withClass classname: String!) { super.init(withClass: classname) } 并放入关键字withClass

我不确定是否有针对此的解决方法,可能是警告抑制?或者class init方法是否需要更改它的名称?

1 个答案:

答案 0 :(得分:1)

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

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

由于init方法需要接收字符串参数。     <(NSString *)classname;>>

还将init方法更改为:

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

希望它有所帮助。

相关问题