3

我正在阅读教程并尝试向alamofire属性列表发出请求。在响应属性列表的闭包中,我使用 arguments (_, _, result)。但是,XCode 给了我错误:

无法将类型“(_,_,_)-> Void”的值转换为预期的参数类型“响应-> Void”

我正在使用alamofire 3.0测试版。

4

2 回答 2

1

根据存储库中的版本,Alamofire 现在是 3.3 版,因为 3.0 版它有一点变化。

在您使用响应处理程序时,您的闭包需要如下所示:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
     .response { request, response, data, error in
         print(request)
         print(response)
         print(data)
         print(error)
      }

如果您使用例如响应 JSON 处理程序,所有内容现在都封装response在此代码中:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
     .responseJSON { response in
         print(response.request)  // original URL request
         print(response.response) // URL response
         print(response.data)     // server data
         print(response.result)   // result of response serialization

         if let JSON = response.result.value {
             print("JSON: \(JSON)")
         }
     }

或者您可以使用此代码更轻松地处理:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
     .responseJSON { response in
         switch(response.result) {
         case .Success(let value):
            if let JSON = value {
              print("JSON: \(JSON)")
            }
         case .Failure(let error):
            print(error.description)    
         }
     } 

我希望这对你有帮助。

于 2016-03-27T15:26:06.747 回答
1

这对我有用,如果对您不起作用,请粘贴您的代码以检查问题。

var params : Dictionary<String,String> = ["key":"value"]
Alamofire.request(.POST, "someURL" ,parameters: params).responseJSON()
{
    response in

    let data = JSON(response.result.value!)

    if(data != nil)
    {
        var status = data["status"] as? String
    }
}
于 2016-03-27T15:19:14.840 回答