2016-02-17 7 views
6

मैं अपने आईओएस प्रोजेक्ट्स में से एक में अलामोफायर का उपयोग कर रहा हूं, लेकिन हाल ही में जब अलामोफायर 3.0 में अपग्रेड किया गया तो प्रारूप परिणाम लौटने के लिए थोड़ा बदल गया। मेरे मामले में मैं एक लॉगिन एपीआई कॉल करना चाहता हूं और इसे परिणाम वापस कराना चाहता हूं। कुछ त्रुटियां हो सकती हैं जो हो सकती हैं, इसलिए मैं हमेशा एपीआई परिणाम में लौटता हूं कि समस्या क्या है, इसलिए अगर मैं 400 का जवाब देता हूं तो मैं अपने कोड को विफलता ब्लॉक में जाना चाहता हूं और फिर मेरे एपीआई से संदेश को भाग के रूप में शामिल करना चाहता हूं त्रुटि का, लेकिन मुझे लगता है कि परिणाम विफल होने पर अनुरोध से प्रतिक्रिया डेटा प्राप्त नहीं हो सकता है।अलामोफायर त्रुटि से प्रतिक्रिया डेटा प्राप्त करना

यहाँ मेरी कोड है:

Alamofire.request(
     method, 
     Constants.baseURL + route, 
     parameters: fullParameters) 
     .validate() 
     .responseJSON { response in 
      let json = JSON(response.result.value!) 
      switch response.result { 
      case .Success: 
       completion?(json["data"]) 
      case .Failure(let errorData): 
       failure?(errorData, json["errmsg"]) 
      } 
    } 

क्या इस में हो रहा है, कि जब प्रतिक्रिया एक विफलता है, यह टूट जाता है क्योंकि response.result.value नहीं के बराबर है, लेकिन मैं इसे JSON होना चाहते हैं एपीआई से वापस आ गया कोई फर्क नहीं पड़ता कि क्या। जब प्रतिक्रिया दूसरी तरफ एक सफलता है तो यह पूरी तरह से काम करता है।

उत्तर

2

चूंकि आप validate() पर कॉल कर रहे हैं, अलामोफ़ीयर स्वचालित रूप से 200...299 से स्थिति कोड को मान्य कर रहा है।

  • निकालें .validate() और मैन्युअल रूप से सब कुछ संभाल:

    आप Alamofire अपनी स्थिति कोड को मान्य नहीं करना चाहते, लेकिन आप इसे अपने आप को क्या करना चाहते हैं, तो मैन्युअल रूप से आप दो विकल्प हैं।

  • उस श्रेणी के लिए validate().validate(statusCode: yourRange) बदलें और उन्हें मैन्युअल रूप से संभालने के लिए बदलें।

अधिक जानकारी here

+0

जिसने इसे हल किया, बहुत बहुत धन्यवाद! :) – Henry

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