Alamofire 响应 属性 列表

Alamofire Response Property List

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

Cannot convert value of type '(_, _, _) -> Void' to expected argument type 'Response -> Void'

我正在使用 alamofire 3.0 测试版。

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

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

根据存储库中的发布,Alamofire 现在是 3.3 版,自 3.0 版以来它发生了一些变化。

在你使用 Response Handler 你的闭包需要看起来像这样:

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

如果您使用例如 Response JSON Handler,现在所有内容都封装在 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)    
         }
     } 

希望对你有所帮助。