我有一个关于Alamofire for Swift 2新版本的问题
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。但是当我编译并放置断点时,调试器说dico为nil。如果我使用debugDescription打印结果,它不是nil,而是包含我所期望的内容。如何转换Result变量?
3条答案
按热度按时间erhoui1w1#
公认的答案很好用,但是随着Alamofire 3.0.0的引入,有一些影响这个实现的突破性变化。
migration guide有进一步的解释,但我将突出与实际解决方案相关的解释。
.Failure
情况下不存储NSData?。*另外,考虑到Alamofire会将任何已完成的请求视为成功,而不管响应的内容如何。因此,您需要在
.responseJSON()
之前链接一个.validate()
,以命中.Failure
情况。请在此处阅读更多信息。更新的代码:
供参考:
yvfmudvl2#
如果你不介意使用SwiftyJSON库,这里有一个Xcode 7 Beta 5 + Alamofire 2.0.0-beta.1 + SwiftyJSON(xcode 7分支)的工作示例
编辑:
更新了SwiftyJSON git页面
huus2vyu3#
现在,您可以实现大多数需要的行为,而无需使用SwiftyJSON。例如,我的OAuthTokenResponse是一个可编码的简单结构体。Alamofire库5.2.2允许您使用“responseDecodable”响应
如果你有一个结构体看起来像这样:
然后在你的网络中调用(使用Alamofire)
在上面的代码中,success case使用可解码协议自动将JSON反序列化到struct中。任何错误都将导致错误case被命中。