Burada büyük sorun var. ObjC'de (this) yazılmış bir kütüphanem vardı. Orada tanımlanmış bir protokol vardı. Ben hızlı dosyasında kullanmaya çalıştığında ben sürekli alıyorum:ObjC protokolü Swift uygulamasında
Tür "XXX" Ben bir test projesi yapılmış şeyleri basitleştirmek için protokol "XXX" için
uymuyor - olması gerektiği Swift projesi olarak oluşturuldu. başlığını köprüleme olarak
@protocol MyProtocol <NSObject>
- (NSString *)getAxisLabel:(id)axis Value:(CGFloat)value;
@end
:
Sonra objc başlık dosyası oluşturmak (tam olarak verilmiş dahil büyük harf/küçük harf maç için her adını ve değerini lütfen unutmayın) iç protokolü aşağıdaki (ı StupidProtocol.h denir):
#import "StupidProtocol.h"
Ve sonra geri Swift dosyasında:
class ViewController: UIViewController, MyProtocol
{
func getAxisLabel(axis: AnyObject!, value: CGFloat) -> String! {
return ""
}
}
Ve otomatik tamamlama, getAxisLabel işlevini benim için tamamlamasa bile, bu hatayı tekrar denedik.
Sorunun "value" argümanı ve "Value" işlev parametresiyle ilgili olduğundan şüpheleniyorum.
Herhangi bir yardım
derece takdir edilecektir.DÜZENLEME
this library teknik olarak benim değil lütfen unutmayın, bu yüzden onu değiştiremez. Orijinal deklarasyonunu değiştirmeden Swift'de kullanmanın bir yoluna ihtiyacım var. Benim örneğim sadece sorunumu basitleştirmek. Ben hiçbir başarı ile senaryolar aşağıdaki denedi
DENEMİŞ NE
:
hata
func getAxisLabel(axis: AnyObject!, Value value: CGFloat) -> String! {
return ""
}
' 'Protokolün gerektirdiği olanlardan farklı argümanlar adı olan' olanlardan farklı argümanlar adı vardır protokol 'hatası
func getAxisLabel(axis: AnyObject!, Value: CGFloat) -> String! {
return ""
}
' ty gerektirdiği pe
accepted answer
Obj c büyük harf V ve hızlı küçük v ikisini de küçük olun.. Her ikisinde de küçük harf olmalı. – Fogmeister
harici yöntem adı "Value" ve "value" gibi iç param adıyla hızlı bir şekilde yazmayı deneyin: "Değer değeri: CGFloat" – hola
Bu sorunu çözebilir ancak ilk etapta V harfi olmamalıdır. Bırak ve işe yarayacak. – Fogmeister