2016-04-28 8 views
9

से एक स्विफ्ट प्रोटोकॉल का विस्तार मैं दो चौखटेअप्रत्याशित व्यवहार जब एक और फ्रेमवर्क (Restofire)

पहले की है। इसमें विस्तार के साथ एक प्रोटोकॉल ResponseSerializer है।

public protocol ResponseSerializable { 

    /// The type of object returned in response. 
    associatedtype Model 

    /// The `Alamofire.ResponseSerializer`. 
    var responseSerializer: ResponseSerializer<Model, NSError> { get } 

} 

extension ResponseSerializable { 

    /// `CustomJSONResponseSerializer` 
    public var responseSerializer: ResponseSerializer<Model, NSError> { 
     return AlamofireUtils.JSONResponseSerializer() 
    } 

} 

दूसरा - Restofire चमक। इसमें डिकोडेबल के अनुरूप मॉडल के लिए एक प्रोटोकॉल का विस्तार है जो रेस्टोफायर फ्रेमवर्क में है।

public extension ResponseSerializable where Model: Decodable { 

    /// `GLOSSResponseSerializer` 
    public var responseSerializer: ResponseSerializer<Model, NSError> { 
     return GlossUtils.GLOSSResponseSerializer() 
    } 

} 

public extension ResponseSerializable where Model: CollectionType, Model.Generator.Element: Decodable { 

    /// `GLOSSResponseSerializer` 
    public var responseSerializer: ResponseSerializer<Model, NSError> { 
     return GlossUtils.GLOSSResponseSerializer() 
    } 

} 

जब मैं परियोजना सब कुछ उम्मीद के रूप में काम करता है लेकिन जब मैं ढांचे आयात करते हैं, तो नियंत्रण Restofire चमक ढांचे में समारोह तक नहीं पहुंचता में सीधे Restofire चमक के स्रोत फ़ाइलें आयात।

+0

मुझे लगता है कि समस्या 'जहां खंड' हो सकती है। क्या आप वाकई कुछ निजी एक्सटेंशन का उपयोग करके प्रोटोकॉल में अनुरूपता नहीं जोड़ रहे हैं? उदाहरण के लिए, यदि कोई निजी एक्सटेंशन है जो 'डीकोडेबल' के अनुरूप 'मॉडल' बनाता है, तो' जहां 'क्लॉज काम नहीं करेगा। अपने सभी एक्सटेंशन को सार्वजनिक करने का प्रयास करें। – Sulthan

+0

सब कुछ सार्वजनिक है –

+0

क्या आप ढांचे को जोड़ने के लिए फली का उपयोग करते हैं, या ढांचे को सीधे अपनी परियोजना में छोड़ देते हैं? – wj2061

उत्तर

3

शायद आपको विस्तार के रूप में सार्वजनिक चिह्नित करना चाहिए?

+0

सार्वजनिक संशोधक जोड़ने के बाद काम नहीं करता है। –

+0

प्रोटोकॉल एक्सटेंशन के लिए सार्वजनिक या निजी जैसे एक्सेस संशोधक की अनुमति नहीं है। ये एक्सटेंशन उनके द्वारा विस्तारित प्रोटोकॉल के पहुंच स्तर का उपयोग करते हैं। –

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