2014-09-03 25 views
5

parametre adlarındaki bu Başlatıcı ben dersek o automagicallylar withName harici parametre adı sağlıyorsa "with" is implied for the first parameter of an initialiser; did you mean name?Swift olan başlatıcı

init(withName: String){ 

} 

Ben, bu ne anlama geldiğini emin değilim şikayet hataya neden olur

bunu çağırarak de

init(name: String){ 

} 

türlü girişimin bunu değiştirirseniz ... isim ya da ne init(with: "joe") veya init(withName: "Joe") başarısız olur. Bu yüzden hata mesajının ne söylediğini ve nasıl bildirebileceğimi bilmiyorum, böylece ona init(withName: "joe") derim.

cevap

13

Swift'de, başlatıcıya with eklememelisiniz. Başlatıcı init(name:) olmalıdır ve Object(name: "joe") olarak adlandırmalısınız.

Bu, Swift yöntemlerinin ObjC'ye nasıl bağlandığından kaynaklanır. ObjC'de, bu başlatıcı otomatik olarak initWithName:'a çevrilecektir. init(withName:) adını verdiyseniz, initWithWithName: olur.

+3

Ne korkunç bir özellik. :( –

+0

Anlaşıldı Hata mesajı yanıltıcıdır. "Bir başlatıcının ilk parametresi 'ile' ile başlayamaz, yoksa Objective-C'den çağrıldığında komik görünecektir." –