“与”在斯威夫特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:

+3

多么可怕的特点。 :( – 2015-05-12 00:20:21

+0

同意,错误信息是误导性的,应该说“初始化器的第一个参数不能以'with'开头,否则当你从Objective-C调用它时会看起来很有趣。 – 2015-07-28 04:34:31