2015-11-05 9 views
41

में त्रुटि मैं तेजी से नेटवर्क हैंडलिंग के लिए अलामोफ़ीयर का उपयोग कर रहा हूं और एक अजीब त्रुटि में चला सकता हूं। ऐसा लगता है कि हम पैरामीटर के रूप में विधि enum पास नहीं कर सकते हैं।
'विधि' इस संदर्भ में टाइप लुकअप के लिए संदिग्ध है, अलामोफ़ीयर

enter image description here

private func apiRequest(method: Method, url: String, apiData: [String : AnyObject], completion:(finished: Bool, response: AnyObject?) ->Void) { 

    Alamofire.request(method, url, parameters: apiData).responseJSON{ response in 
     if let JSON = response.result.value { 
      completion(finished: true, response: JSON) 
     } else { 
      completion(finished: false, response:nil) 
     } 
    } 
} 
+1

योग्य नाम का उपयोग करें, उदा। यदि नाम टकराव है तो 'Alamofire.Method'। आप पहले ही 'अनुरोध' फ़ंक्शन के लिए ऐसा कर रहे हैं। – Sulthan

उत्तर

60

आपने मॉड्यूल है जहाँ से देखने के लिए ऑब्जेक्ट प्रकार निर्दिष्ट करना [त्रुटि विधि पैरामीटर] पर तो है। कॉल Alamofire.Method

10

शायद नाम का टकराव है। हालांकि इस का जवाब निर्माण त्रुटि को ठीक किया

private func apiRequest(method: Alamofire.Method, ... 
0

;: इसे हल करने के लिए, आप (मॉड्यूल का नाम भी शामिल है) enum के योग्य नाम का उपयोग कर सकते मेरे मामले में, चेतावनी दिखा रही फ़ाइल दो अलग-अलग ढांचे में थी इसलिए Xcode को नहीं पता था कि कहां देखना है। यह हमारे आंतरिक ढांचे का इरादा व्यवहार नहीं था, इसलिए मैंने उस प्रतिलिपि को हटा दिया जिसे मैं अब नहीं चाहता था।

1

आपके पास आपके आवेदन में दो या दो से अधिक स्थानों में घोषित कक्षा हो सकती है। त्रुटि यह कह रही है कि इस वर्ग का उपयोग करने के लिए कोई निर्णायक तरीका नहीं है क्योंकि कोड में दो अलग-अलग स्थान घोषित किए गए हैं।

3

मैं भी इस समस्या का सामना करना पड़ा, क्योंकि मैं प्रोटोकॉल के एक ही नाम के एक नंबर की घोषणा कर दी:

protocol SomeProtocol { 
    static func someTypeMethod() 
} 

protocol SomeProtocol { 
    init(someParameter: Int) 
} 

protocol SomeProtocol { 
    var mustBeSettable: Int { get set } 
    var doesNotNeedToBeSettable: Int { get } 
} 
0

प्रकार Method दो आयातित मॉड्यूल में घोषित किया जाता है। आपको उस मॉड्यूल को निर्दिष्ट करना होगा जिससे टाइप का उपयोग किया जाए। Method के बजाय Alamofire.Method का उपयोग करें।

टिप: (आवेदन) आप प्रकार अक्सर प्रयोग कर रहे हैं, तो आप अपने मॉड्यूल में एक प्रकार उर्फ ​​बना सकते हैं:

typealias Method = Almofire.Method 

इस तरह आप किसी भी अधिक Almofire. साथ प्रकार उपसर्ग की जरूरत नहीं होगी ।

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