无法使用类型的参数列表调用'responseObject'(('WeatherResponse?,NSError?) - > Void

时间:2015-09-12 11:28:34

标签: ios alamofire

使用Xcode 7.1 使用Github中的AlamofireObjectMapper框架。我无法使用responseObject处理程序。

以下是代码:

let url = "https://raw.githubusercontent.com/tristanhimmelman/AlamofireObjectMapper/f583be1121dbc5e9b0381b3017718a70c31054f7/sample_json"
    Alamofire.request(.GET, url).responseObject{(response :WeatherResponse?, error: NSError?) -> Void in
       print(response?.location)
        }

如果我删除' - >来自代码的Void'没有区别。 WeatherResponse是一个自定义类,包含以下代码:

class WeatherResponse: Mappable {
var location: String?
var threeDayForecast: [Forecast]?

required init?(_ map: Map){

}

func mapping(map: Map) {
    location <- map["location"]
    threeDayForecast <- map["three_day_forecast"]
}
}

错误:

enter image description here

3 个答案:

答案 0 :(得分:0)

responseObject的方法签名是

public func responseObject<T: Mappable>(completionHandler: (T?, ErrorType?) -> Void) -> Self

请注意,错误参数为ErrorType?,而不是NSError?。调用闭包的正确方法是:

Alamofire.request(.GET, url).responseObject{(response: WeatherResponse?, error: ErrorType?) -> Void in
   print(response?.location)
}

请务必导入AlamofireAlamofireObjectMapperObjectMapper

答案 1 :(得分:0)

导入AlamofireObjectMapper&amp; Model中的ObjectMapper解决了我的问题

答案 2 :(得分:0)

目前使用版本2.1,您可以使用:

Alamofire.request(.GET, URL, parameters: nil)
    .responseObject({ (response: Response< WeatherResponse, NSError>) -> Void in
        if response.result.isSuccess {
            print(response.result.value)
        }
    })
祝你好运!