2015-10-04 15 views
8

Không thể gọi giá trị của loại không hoạt động 'NSHTTPURLResponse?' enter image description hereKhông thể gọi giá trị của loại không thuộc loại 'NSHTTPURLResponse?' Alamofire ObjectMapper

Ai đó có thể giúp tôi ở đây không?

Đây là mã

public func responseObject<T: Mappable>(queue: dispatch_queue_t?, keyPath: String?, completionHandler: (NSURLRequest, NSHTTPURLResponse?, T?, AnyObject?, ErrorType?) -> Void) -> Self { 

    return response(queue: queue, responseSerializer: Request.JSONResponseSerializer(options: NSJSONReadingOptions.AllowFragments)) { request, response, result in 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
      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 ?? result.data, result.error) 
      } 
     } 
    } 
} 

xấu của tôi, tôi không chú ý đến kiểu trả về của Alamofire 2.0,

này là cố định, cập nhật code đang ở đây

public func responseObject<T: Mappable>(queue: dispatch_queue_t?, keyPath: String?, completionHandler: (NSURLRequest, NSHTTPURLResponse?, T?, AnyObject?, ErrorType?) -> Void) -> Self { 

let serializer = Request.JSONResponseSerializer(options: NSJSONReadingOptions.AllowFragments) 

return response(queue: queue, responseSerializer: serializer) { (Response) -> Void in 

     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
      let parsedObject = Mapper<T>().map(keyPath != nil ? Response.result.value?[keyPath!] : Response.result.value) 



      dispatch_async(queue ?? dispatch_get_main_queue()) { 
       completionHandler(self.request!, self.response, parsedObject, Response.result.value ?? Response.result.value, Response.result.error) 
      } 
     } 

    } 
} 
+0

Tôi đã thử sử dụng trình nối tiếp phản hồi Alamofire 2.0, điều này cũng cho cùng một lỗi – Abh

+0

Hãy viết mã của bạn, không đăng tải màn hình. – SJuan76

+0

Tôi đã thêm mã. Bất kỳ ý tưởng? – Abh

Trả lời

3

Đã này lỗi bản thân mình và mất một lúc để tìm ra lý do tại sao nó đã xảy ra. Có vẻ như các tham số cho lệnh gọi phương thức response() không khớp với bất kỳ khai báo phương thức nào, sau đó nhanh chóng giả sử mã của bạn đề cập đến thuộc tính response, NSHTTPURLResponse. Bởi vì có tài sản mà "bóng tối" tên của phương thức, nhanh chóng không thể giúp bạn với các lỗi cho biết tham số nào là một vấn đề, nó chỉ punts trên phù hợp với bất kỳ phương pháp.

Trong trường hợp của tôi, completionHandler không khớp vì thông số của nó. Lưu ý, mã mẫu của nó tôi thấy .response { response in ... } đó là vấn đề. Không có phương pháp response tham gia đóng cửa "phản hồi" như có đối với phương pháp responseString, responseJSON, v.v.

Điều đó nói rằng, Abh, tôi không thể biết được vấn đề chính xác với mã của bạn là gì.

+0

Bạn đã giải quyết vấn đề này bằng cách nào? – dejavu89

+1

Tôi đã sửa các đối số thành 'completionHandler' trong việc sử dụng' response (hàng đợi hàng đợi: dispatch_queue_t? = Nil, completionHandler: ...) -> Phương thức Self', thay đổi '.response {response in ...}' thành được sao chép từ mã mẫu sang '.response {_, _, _, lỗi trong ...}' –

+0

Cảm ơn bạn đã trả lời nhưng tôi không thể đăng mã của mình ở đây, vì vậy tôi đã hỏi một câu hỏi mới. Có vẻ như bạn có thể trả lời, vui lòng trợ giúp và tôi sẵn sàng chấp nhận câu trả lời của bạn nếu nó giúp http://stackoverflow.com/questions/39838463/alamofire-error-after-updating-to-latest-version – dejavu89

0

Bạn cần đánh dấu hoàn thành của mìnhHandler là @cắt hình.

Các vấn đề liên quan