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

标签 swift ibm-cloud

我正在尝试从 Bluemix 上的移动数据 SDK 继承 IBMDataObjectIBMData 框架是用 Objective-C 编写的,所以我试图覆盖的 init 方法如下所示:

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

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

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

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

enter image description here

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

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

最佳答案

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

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

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

还将 init 方法更改为:

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

希望对您有所帮助。

关于swift - 在 Swift 中为具有命名冲突的 Objective-C 类覆盖 init 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565246/

相关文章:

arrays - 在 Swift 中用空项目对数组进行升序排序

swift - 如何添加UILongPressGestureRecognizer释放功能

java - 访问 ibm bluemix java 运行时中的文件

ibm-cloud - IBM Watson 评估 - 训练数据是否上传/保存到 IBM 服务器?

python - 如何在不保存到文件的情况下收听 IBM Watson Text To Speech 结果 (python)

swift - 我如何定义 CollectionType 的扩展,以便它的方法可用于字典?

ios - 根据缩放级别缩放自定义标记图标

用于 Flutter 原生广告的 Objective-C 的 Swift 等价物

node.js - 在 ibm cloud 上启动应用程序时找不到模块 'ibmbluemix'

docker - 如何将容器组与容器链接?