2015-09-22 10 views
6

में कनवर्ट करने के बाद त्रुटि यह लाइन हमेशा अलामोफायर अनुरोध करने और JSON प्रतिक्रिया प्राप्त करने के लिए मेरे लिए ठीक काम कर रही है।अलामोफ़ीयर + स्विफ्ट जेसन संकलन त्रुटि कोकोड 7

Alamofire.request(req).responseJSON() { 
     (request, response, data, error) in 

    // .... 

} 

XCode 7 के उन्नयन और स्विफ्ट 2.0 के लिए परियोजना को परिवर्तित करने के बाद, मेरे Alamofire अनुरोध किया है कि कोड की सभी पंक्तियों इस त्रुटि नहीं दिखा रहे हैं:

'(_, _, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void' 
+0

मैं उलझन में हूं, लेकिन अलामोफायर डॉक्टर कहता है कि इसे कैसे कहा जाना चाहिए। यहां तक ​​कि जब मैं इसे 2 पैरा तक ले गया, तब भी वही त्रुटि, सिवाय इसके कि (_, _, _, _) – Lavvo

+0

के बजाय (_, _) दिखाता है, नीचे एक उत्तर जोड़ा गया था, उसे Xcode7 में एक एएफ प्रोजेक्ट खोलना पड़ा देखो, उम्मीद है कि यह काम करता है! –

उत्तर

14

इस link में जवाब मिले लेकिन यह जापानी में है। ऐसा लगता है यह अब (लिंक में जवाब से लिया गया) से सही है:

Alamofire.request(.GET, requestUrl).responseJSON { 
    response in 
    if response.result.isSuccess { 
     let jsonDic = response.result.value as! NSDictionary 
     let responseData = jsonDic["responseData"] as! NSDictionary 
     self.newsDataArray = responseData["results"] as! NSArray 
     self.table.reloadData() 
    }    
} 
+0

मैं अभी यह कोशिश कर रहा हूं। अब तक, यह मेरी संकलन त्रुटियों को हटा रहा है। परीक्षण करने के लिए मेरा ऐप बनाने से पहले मुझे विभिन्न क्षेत्रों में इसे और अधिक बार करने की ज़रूरत है, तो मैं आपको परिणाम बता दूंगा। – Lavvo

+0

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

+0

ऐसा लगता है कि यदि आप कोकोपोड्स का उपयोग करके अलामोफायर स्थापित करते हैं, तो यह समस्या नहीं होती है। –

0

मैं वायु सेना के साथ एक परियोजना को खींच लिया और ये रहा:

Alamofire.request(.POST, someRequest).responseJSON { (request, response, result) -> Void in 


    } 

लग रहा है इसके लिए सिर्फ 3 मानकों है जैसे परिणाम, अनुरोध, प्रतिक्रिया & परिणाम वस्तु। मुझे लगता है कि ऐसा इसलिए है क्योंकि यह कुछ ऐसा होना चाहिए जो स्विफ्ट 2.0 में फेंकता हो।

0

Alamofire-SwiftyJSON त्रुटि हैंडलिंग का उपयोग करते हुए एक ही है:

.responseSwiftyJSON({ (request, response, json, error) -> Void in 
    if let error = error { 
     print("Received error \(error)") 
     return 
    } 
    else { 
     print("Received json response \(json)") 
    } 
} 

लेकिन अब error एक ErrorType बजाय एक NSError है।

सादा Alamofire और iOS JSON का उपयोग करना, प्रतिक्रिया और त्रुटि प्रकार Result<AnyObject> का एक परिणाम में एकीकृत कर रहे हैं, आप परिणाम खोलने में है:

.responseJSON { request, response, result in 
    switch result { 
    case .Success(let value): 
     print("Received response \(value)") 
    case .Failure(_, let error): 
     print("Received error \(error)") 
    } 
2

पुरानी वाक्य रचना:

Alamofire.request(req).responseJSON() { 
    (request, response, data, error) in 
    // .... 
} 

नई वाक्य रचना :

Alamofire.request(req).responseJSON() { 
    response in 
    if response.result.isSuccess { 
    let data = response.result.value 
    // .... 
    } 
} 
संबंधित मुद्दे