我有一个Objective-C类,它声明了类似的方法:
@interface MyClass: NSObject
- (instancetype) initWithDefaultsFoo;
- (instancetype) initWithDefaultsBar;
@end
XCode自动生成相应的Swift接口:
open class MyClass : NSObject {
public init!(defaultsFoo: ())
public init!(defaultsBar: ())
}
但是如何从Swift构建MyClass
?
我试过了:
var x = MyClass(defaultsFoo: ()) // ERROR: Editor placeholder in source file.
var y = MyClass(defaultsBar: nil) // ERROR: Nil is not compatible with expected argument type '()'
答案 0 :(得分:1)
var x = MyClass(defaultsFoo: ())
应该有效。为什么看似没&#39的原因;吨是因为当XCode的自动完成呼叫,它在的占位符填充看起来像的()
但是,这不是'吨实际上()
(请注意蓝色突出显示。检查磁盘上的文件还会显示占位符被写为<#T##()#>
。)
可替换地:
var x = MyClass(defaultsFoo: Void())
似乎也有效,但可能更加丑陋。
答案 1 :(得分:-1)
基本上,您遇到的是Objective-C中的错误;没有初始化程序应该是这样的。初始值设定项应为init
且不带参数,或者应为initWith...
并采用参数。你的Objective-C违反了命名惯例,而Swift对它的翻译也相应地掀起了火焰。