2015-10-02 10 views
5

मैं अलामोफायर 3 और ऑब्जेक्टमैपर (https://github.com/Hearst-DD/ObjectMapper) के नवीनतम संस्करण के साथ AlamofireObjectMapper (https://github.com/tristanhimmelman/AlamofireObjectMapper) को लागू करने की कोशिश कर रहा हूं।टाइप 'टी?' के मान को परिवर्तित नहीं कर सकता अपेक्षित तर्क प्रकार '_?' - जेनेरिक प्रकार और समापन ब्लॉक

ऐसा लगता है कि AlamofireObjectMapper, को अलामोफ़ीयर 3 के साथ काम करने के लिए अपडेट नहीं किया गया है, इसलिए मैं इसे स्वयं करने की कोशिश कर रहा हूं।

मैं कोड के इस टुकड़े पर आया हूं और अब मैं अटक गया हूं।

ऐसा लगता है कि जेनेरिक टाइप टी प्रतिक्रिया के समापन ब्लॉक के भीतर एक्सेसिबल नहीं है। क्या Alamofire 3 परिवर्तन या स्विफ्ट 2.1 परिवर्तन है?

Cannot convert value of type 'T?' to expected argument type '_?'

public func responseObject<T: Mappable>(queue: dispatch_queue_t?, keyPath: String?, completionHandler: (NSURLRequest, NSHTTPURLResponse?, T?, AnyObject?, ErrorType?) -> Void) -> Self { 
    return response(queue: queue) { (request, response, data, error) -> Void in 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
      let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments) 
      let result = JSONResponseSerializer.serializeResponse(request, response, data, error) 
      let parsedObject = Mapper<T>().map(keyPath != nil ? result.value?[keyPath!] : result.value) 

      dispatch_async(queue ?? dispatch_get_main_queue()) { 
       completionHandler(self.request!, self.response, parsedObject, result.value ?? response.data, result.error) // Here it shows the error: Cannot convert value of type 'T?' to expected argument type '_?' 
      } 
     } 
    } 

} 

उत्तर

14

बस समाधान नहीं मिला:

यह त्रुटि है। यह एक्सकोड 7.1 बीटा कंपाइलर की समस्या प्रतीत होता था। यह "parsedObject" पैरामीटर पर समस्या दे रहा था और अगले पैरामीटर पर एक गलती हुई थी।

completionHandler(self.request!, self.response, parsedObject, **result.value ?? data**, result.error) 

तो, यदि आपको एक ही त्रुटि मिलती है, तो अन्य सभी पैरामीटर की समीक्षा ठीक है।

शुभकामनाएं।

+4

हा हा के लिए mabril के जवाब में अपडेट करें। सौभाग्य से मैंने आपका जवाब जल्दी देखा। यह एक प्रकार की बग है जो उपयोगी त्रुटि संदेशों को स्विफ्ट करने के लिए धन्यवाद डीबग करने में घंटों लग सकती है। बहुत बहुत धन्यवाद – villy393

+0

"अनसुलझे ऑपरेटर का उपयोग ** **" :( –

+0

वाह धन्यवाद, त्रुटि मेरे लिए भी अगले पैरामीटर पर थी (एक्सकोड 8.0 चल रहा है) – aryaxt

0

Alamofire 3,0

completionHandler(response.request!, response.response, parsedObject, response.result.value ?? response.data, response.result.error) 
संबंधित मुद्दे