2014-12-06 19 views
5

के अनुरूप कक्षा पर टाइप विधि को कॉल करने में असमर्थ मेरा कोड वास्तव में सरल है।प्रोटोकॉल

मेरे प्रोटोकॉल:

protocol BaseEntity 
{ 
    class func getInstance(sourceObject: [NSObject : AnyObject], context: AnyObject!) -> BaseEntity 
    init() 
} 

फिर एक और कक्षा में मैं इस विधि है:

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

    return object 
} 

मैं पहली पंक्ति है कि "के रूप में प्रोटोकॉल प्रकार मूल्य BaseEntity की एक्सेस करना सदस्यों पढ़ता है पर एक संकलक त्रुटि मिली .Type लागू नहीं किया गया है "

जहां तक ​​मेरा बता सकते हैं, इस स्विफ्ट में संभव है।

उत्तर

0

मुझे अभी भी इसका सामना करना पड़ा! इसका मतलब है कि स्विफ्ट प्रोग्रामिंग भाषा प्रोटोकॉल के अंदर कक्षा विधियों का समर्थन नहीं करती है ... अभी तक। इसके लिए कामकाज विशिष्ट स्थिति पर निर्भर करता है और ऐसा नहीं है "आपको इसके बजाय ऐसा करना चाहिए"। अगर किसी के पास बेहतर समाधान है, तो कृपया साझा करें!

यह भी वर्ग चर के साथ मामला है, लेकिन वहाँ एक hacky workaround for that.

+0

दुर्भाग्य है, मैं इस के लिए किसी भी समाधान नहीं मिला। एकमात्र तरीका जिसे मैं इसे स्वीकार करने में सक्षम हूं, जेनिक्स का उपयोग करके है, लेकिन जेनरिकों की अपनी सीमाएं भी हैं। इस तरह के मुद्दे मुझे वास्तव में सोचते हैं कि भाषा अपूर्ण है। उनका इरादा चीजों को आसान और अधिक स्पष्ट बनाना था ... अच्छी तरह से अनुमान लगाएं कि क्या वे इस तरह की चीजों का समर्थन नहीं करते हैं और किसी को आपके द्वारा उजागर किए गए कुछ कामकाजों पर भरोसा करना पड़ता है, जो कि बहुत खराब है। – mdonati

संबंधित मुद्दे