2014-12-06 27 views
5

standardına uygun sınıf yöntemiyle çağrı yapılamıyor. Kodum gerçekten çok basit.İletişim kuralı

Benim protokolü:

Sonra başka bir sınıfta ben bu yöntemi var
protocol BaseEntity 
{ 
    class func getInstance(sourceObject: [NSObject : AnyObject], context: AnyObject!) -> BaseEntity 
    init() 
} 

: Ben protokol türü değeri BaseEntity erişme üyeleri" olarak okur ilk satırda bir derleyici hata var

private func convertJSONDictionaryIntoModel(jsonDictionary : [NSObject : AnyObject], mapClass: BaseEntity.Type) -> BaseEntity 
{ 
    let object = mapClass.getInstance(jsonDictionary, context: nil) 

    return object 
} 

.Type, "

Uygulanamayacağı kadarıyla, bu Swift'te mümkündür.

cevap

0

Ben de bununla karşılaştım! Bu, Swift programlama dilinin protokoller içindeki sınıf yöntemlerini desteklemediği anlamına gelir ... henüz. Bunun için geçici çözüm, belirli bir duruma bağlı gibi görünüyor ve "bunun yerine bunu yapmalısınız" diye bir şey yok. Eğer daha iyi bir çözüm varsa, lütfen paylaşın!

Bu aynı zamanda sınıf değişkenleri olduğu

, ancak bunun için bir çözüm bulamadık, ne yazık ki bir hacky workaround for that.

+0

yoktur. Bunu kabul etmeyi başarabilmemin tek yolu, jenerik kullanmaktır, ancak jeneriklerin de kendi sınırlamaları vardır. Bu tür konular bana dilin eksik olduğunu düşünmemi sağlıyor. Amaçları, işleri daha kolay ve daha açık bir hale getirmekti. Peki ya bu tür şeyleri desteklemiyorlarsa, ve maruz kaldığınız kadarıyla bazı geçici çözümlere güvenmek zorunda kaldıklarını tahmin edin. – mdonati