转换为Xcode 7后,Alamofire + SwiftyJSON编译错误

时间:2015-09-22 17:44:43

标签: ios xcode swift alamofire swifty-json

这条线对我来说一直很好,可以用来制作Alamofire请求并获得JSON响应。

Alamofire.request(req).responseJSON() {
        (request, response, data, error) in

    // ....

}

升级到XCode 7并将Project转换为Swift 2.0后,具有我的Alamofire请求的所有代码行都没有显示此错误:

'(_, _, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void'

4 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:2)

旧语法:

Alamofire.request(req).responseJSON() {
  (request, response, data, error) in
   // ....
}

新语法:

Alamofire.request(req).responseJSON() {
  response in
  if response.result.isSuccess {
    let data = response.result.value
    // ....
  }
}

答案 2 :(得分:0)

我用AF启动了一个项目,然后你去了:

Alamofire.request(.POST, someRequest).responseJSON { (request, response, result) -> Void in


    }

看起来只有3个参数用于关闭,请求,响应和&amp;结果对象。我想象这是因为这应该是Swift 2.0中引发的东西。

答案 3 :(得分: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)")
    }
}

但现在errorErrorType而不是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)")
    }