无法调用非函数类型的值'NSHTTPURLResponse?' Alamofire ObjectMapper

Abh*_*Abh 8 swift alamofire swift2

无法调用非函数类型的值'NSHTTPURLResponse?'在此输入图像描述

有人可以帮我吗?

这是代码

   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)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的不好,我没注意到Alamofire 2.0的返回类型,

这是固定的,更新的代码在这里

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)
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

Pie*_*ton 3

我自己也遇到过这个错误,并花了一段时间才弄清楚为什么会发生。看起来如果response()方法调用的参数与任何方法声明都不匹配,那么 swift 会假设您的代码引用了属性responsea NSHTTPURLResponse。因为存在“隐藏”方法名称的属性,所以 swift 无法帮助您解决指示哪个参数有问题的错误,它只是在匹配任何方法时进行下注。

就我而言,completionHandler由于参数而不匹配。请注意,我看到的示例代码.response { response in ... }有问题。没有responseresponseStringresponseJSON等方法那样采用“响应”闭包的方法。

也就是说,Abh,我无法通过查看您的代码的确切问题来判断。