2014-09-03 1 views
5

Это инициализатора вызовет ошибку жалуясь, что "with" is implied for the first parameter of an initialiser; did you mean name?«с» в именах параметров в Swift инициализаторов

init(withName: String){ 

} 

Я не уверен, что это значит, если он обеспечивает автомагически внешнее имя параметра withName, если я называю его имя или что ...

Если изменить его

init(name: String){ 

} 

любая попытка вызова его init(with: "joe") или init(withName: "Joe") не удастся. Поэтому я понятия не имею, что сообщение об ошибке сообщает мне и как я могу объявить его, поэтому я называю его init(withName: "joe").

ответ

13

В Swift вы не должны добавлять with к инициализатору. Инициализатор должен быть init(name:), и вы должны называть его Object(name: "joe").

Это из-за того, как метод Swift соединяется с ObjC. В ObjC этот инициализатор будет автоматически переведен в initWithName:. Если вы назвали его init(withName:), это будет initWithWithName:.

+3

Какая ужасная особенность. :( –

+0

Согласен. Сообщение об ошибке вводит в заблуждение. Оно должно было сказать: «Первый параметр инициализатора не может начинаться с« с », иначе он будет выглядеть смешно, когда вы вызываете его из Objective-C». –

Смежные вопросы