此代码在iOS 8和swift 2.0上完全运行了我以前的项目。
这是我的代码:
let url=NSURL(string: _resourceURL)!
Alamofire.request(.GET ,url).responseJSON { (request : NSURLRequest?,response: NSHTTPURLResponse?, result: Result<AnyObject> ) -> void in
print(result.value.debugDescription)
}
现在我尝试使用iOS 9,Swift 3.0,alamofire 4.0.0 但抛出以下错误:
通用类型'结果'专用于太少的类型参数(得到1,但预期为2)
使用未声明类型'void'
上下文闭包类型'响应 - &gt; Void'期望1个参数,但3个用于闭包体
答案 0 :(得分:0)
如果您没有特定对象,则需要使用JSON进行转换,并且您很乐意按键访问属性,您可以这样做:
Alamofire.request(.GET, url).responseJSON { response in
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
答案 1 :(得分:0)
Alamofire的乐于助人的精灵写了一个简洁但不可或缺的migration guide,包括'之前/之后'式的代码片段。基于这些,您需要使用一些代码来处理AF 4.0:
String
(AF扩展为符合其自己的URLConvertible
协议),而不是NSURL。.get
是默认方法,因此我们可以完全放弃它。URLResponse
和URLRequest
不再具有NS前缀。DataResponse
类型,其中包含我们的朋友result
,request
和response
。所以工作代码可能如下所示:
// resourceURL
let url = "http://www.example.com/endpoint"
Alamofire.request(url).responseJSON { dataResponse in
guard
let request = dataResponse.request,
let response = dataResponse.response
else { fatalError("Don't ship me, debug me, master!") }
print(dataResponse.result.value.debugDescription)
这是在XCode 8GM中编译的,但是我还没有运行它(没有真正的终点),所以无论如何都是如此。