如何获得Alamofire.request()。responseJSON在swift 2中的结果值?

我有一个关于Swift 2的新版本Alamofire的问题

Alamofire.request(.POST, urlString, parameters: parameters as? [String : AnyObject]) .responseJSON { (request, response, result) -> Void in let dico = result as? NSDictionary for (index, value) in dico! { print("index : \(index) value : \(value)") } } 

在本节中,我想将结果转换为NSDictionary。 但是当我编译并放置一个断点时,debugging器说dico是零。 如果我使用debugDescription打印结果,它不是零,并包含我所期望的如何投出结果variables?

接受的答案很好,但随着Alamofire 3.0.0的推出,有一些突破性的变化影响了这个实现。
迁移指南有进一步的解释,但我会强调与实际解决scheme有关的。

  • 响应
    所有的响应串行器(除了响应)都返回一个通用的响应结构。

  • 响应types
    结果types已被重新devise为不存储NSData的双genericstypes? .Failure情况下。

还要指望Alamofire将任何已完成的请求视为成功,而不pipe响应的内容如何。 因此,您需要在.responseJSON()之前链接一个.responseJSON()以处理.Failure事件。 在这里阅读更多关于它。

更新的代码:

 let url = "http://api.myawesomeapp.com" Alamofire.request(.GET, url).validate().responseJSON { response in switch response.result { case .Success(let data): let json = JSON(data) let name = json["name"].stringValue print(name) case .Failure(let error): print("Request failed with error: \(error)") } } 

以供参考:

  • Xcode 7.3(Swift 2.2)
  • Alamofire 3.3.1
  • SwiftyJSON 2.3.3

如果你不介意使用SwiftyJSON库,下面是Xcode 7 Beta 5 + Alamofire 2.0.0-beta.1 + SwiftyJSON(xcode7分支)

 Alamofire.request(.GET, url, parameters: params, encoding: ParameterEncoding.URL).responseJSON { (_, _, result) in switch result { case .Success(let data): let json = JSON(data) let name = json["name"].string case .Failure(_, let error): print("Request failed with error: \(error)") } } 

编辑:

更新了SwiftyJSON git页面