转换为 Xcode 7 后 Alamofire + SwiftyJSON 编译错误
Alamofire + SwiftyJSON Compile Error after converting to Xcode 7
这条线对我来说一直很好用,可以发出 Alamofire 请求并获得 JSON 响应。
Alamofire.request(req).responseJSON() {
(request, response, data, error) in
// ....
}
升级到 XCode 7 并将项目转换为 Swift 2.0 后,我的 Alamofire 请求的所有代码行都没有显示此错误:
'(_, _, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void'
在这个 link 中找到了答案,但它是日文的。从现在看来这是正确的(取自 link 中的答案):
Alamofire.request(.GET, requestUrl).responseJSON {
response in
if response.result.isSuccess {
let jsonDic = response.result.value as! NSDictionary
let responseData = jsonDic["responseData"] as! NSDictionary
self.newsDataArray = responseData["results"] as! NSArray
self.table.reloadData()
}
}
我用 AF 启动了一个项目,给你:
Alamofire.request(.POST, someRequest).responseJSON { (request, response, result) -> Void in
}
看起来它只是闭包、请求、响应和结果对象的 3 个参数。我想这是因为这应该是 Swift 2.0 中的东西。
使用Alamofire-SwiftyJSON错误处理是一样的:
.responseSwiftyJSON({ (request, response, json, error) -> Void in
if let error = error {
print("Received error \(error)")
return
}
else {
print("Received json response \(json)")
}
}
但现在 error
是 ErrorType
而不是 NSError
。
使用纯 Alamofire 和 iOS JSON,响应和错误统一在类型 Result<AnyObject>
的结果中,您必须解包结果:
.responseJSON { request, response, result in
switch result {
case .Success(let value):
print("Received response \(value)")
case .Failure(_, let error):
print("Received error \(error)")
}
旧语法:
Alamofire.request(req).responseJSON() {
(request, response, data, error) in
// ....
}
新语法:
Alamofire.request(req).responseJSON() {
response in
if response.result.isSuccess {
let data = response.result.value
// ....
}
}
这条线对我来说一直很好用,可以发出 Alamofire 请求并获得 JSON 响应。
Alamofire.request(req).responseJSON() {
(request, response, data, error) in
// ....
}
升级到 XCode 7 并将项目转换为 Swift 2.0 后,我的 Alamofire 请求的所有代码行都没有显示此错误:
'(_, _, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void'
在这个 link 中找到了答案,但它是日文的。从现在看来这是正确的(取自 link 中的答案):
Alamofire.request(.GET, requestUrl).responseJSON {
response in
if response.result.isSuccess {
let jsonDic = response.result.value as! NSDictionary
let responseData = jsonDic["responseData"] as! NSDictionary
self.newsDataArray = responseData["results"] as! NSArray
self.table.reloadData()
}
}
我用 AF 启动了一个项目,给你:
Alamofire.request(.POST, someRequest).responseJSON { (request, response, result) -> Void in
}
看起来它只是闭包、请求、响应和结果对象的 3 个参数。我想这是因为这应该是 Swift 2.0 中的东西。
使用Alamofire-SwiftyJSON错误处理是一样的:
.responseSwiftyJSON({ (request, response, json, error) -> Void in
if let error = error {
print("Received error \(error)")
return
}
else {
print("Received json response \(json)")
}
}
但现在 error
是 ErrorType
而不是 NSError
。
使用纯 Alamofire 和 iOS JSON,响应和错误统一在类型 Result<AnyObject>
的结果中,您必须解包结果:
.responseJSON { request, response, result in
switch result {
case .Success(let value):
print("Received response \(value)")
case .Failure(_, let error):
print("Received error \(error)")
}
旧语法:
Alamofire.request(req).responseJSON() {
(request, response, data, error) in
// ....
}
新语法:
Alamofire.request(req).responseJSON() {
response in
if response.result.isSuccess {
let data = response.result.value
// ....
}
}