为 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)
}
希望对您有所帮助。
我正在尝试从 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)
}
希望对您有所帮助。