2014-09-03 13 views
5

Ten initialiser spowoduje błąd twierdząc, że "with" is implied for the first parameter of an initialiser; did you mean name?„z” w nazwach parametrów w Swift incjalizatory

init(withName: String){ 

} 

Nie jestem pewien, co to oznacza, jeśli zapewnia automagicznie zewnętrzną nazwę parametru withName jeśli ja to nazywam wymienić lub co ...

Gdybym go zmienić na

init(name: String){ 

} 

każda próba nazywając ją init(with: "joe") lub init(withName: "Joe") zakończy się niepowodzeniem. Nie mam pojęcia, co mówi mi komunikat o błędzie i jak mogę go oznaczyć, dlatego nazywam to init(withName: "joe").

Odpowiedz

13

W Swift nie należy dodawać with do inicjalizatora. Inicjator powinien być init(name:) i powinieneś go nazwać Object(name: "joe").

Wynika to z tego, jak metody Swift łączą się z ObjC. W ObjC ten inicjator zostanie automatycznie przetłumaczony na initWithName:. Jeśli go nazwiesz init(withName:), stanie się to initWithWithName:.

+3

Co za okropna funkcja. :( –

+0

Uzgodniono, że komunikat o błędzie jest mylący: Powinien powiedzieć: "Pierwszy parametr inicjalizatora nie może rozpoczynać się od" z ", bo inaczej będzie wyglądał zabawnie, gdy wywołasz go z Objective-C." –

Powiązane problemy