“与”在斯威夫特initialisers
问题描述:
参数名称此初始化器会导致错误抱怨"with" is implied for the first parameter of an initialiser; did you mean name?
“与”在斯威夫特initialisers
init(withName: String){
}
我不知道这意味着什么,如果它提供了自动的外部withName
参数名称,如果我把它叫做名字还是什么......
如果我将其更改为
init(name: String){
}
任何试图在调用它init(with: "joe")
或init(withName: "Joe")
将会失败。所以我不知道错误信息告诉我什么,以及我如何声明它,所以我把它称为init(withName: "joe")
。
答
在Swift中,您不应该将with
添加到初始值设定项中。初始化程序应该是init(name:)
,你应该把它叫做Object(name: "joe")
。
这是因为Swift方法如何桥接到ObjC。在ObjC中,该初始化程序将自动转换为initWithName:
。如果您将其命名为init(withName:)
,它将变成initWithWithName:
。
多么可怕的特点。 :( – 2015-05-12 00:20:21
同意,错误信息是误导性的,应该说“初始化器的第一个参数不能以'with'开头,否则当你从Objective-C调用它时会看起来很有趣。 – 2015-07-28 04:34:31