ios - 在 Swift 2 中使用 Alamofire 进行错误处理

标签 ios error-handling swift2 alamofire

您好,我正在练习一些代码,我的代码在 case .Success(let value): 下没问题,它显示警报,但会 case .Failure(let error): 显示带有 4xx 类状态代码的警报?

  Alamofire.request(.GET, URL).responseJSON { (response) -> Void in
            if let value = response.result.value {

             let json = JSON(value)

             switch response.result {
             case .Success(let value):

             let name = json["name"].string
             if let nothing = name {
             self.alertMessage(message: "Name not Found")
                    } else {
            self.alertMessage(message: "Name Found")
                    }
            case .Failure(let error):
            self.alertMessage(message: "Error 4xx / 5xx")
                }

最佳答案

您可以使用validate 来检查状态码:

Alamofire.request(.GET, URL)
    .validate()    // or, if you just want to check status codes, validate(statusCode: 200..<300)
    .responseJSON { response in
        switch response.result {
        case .Success(let value):
            let json = JSON(value)

            if let name = json["name"].string {
                self.alertMessage(message: "Name Found: \(name)")
            } else {
                self.alertMessage(message: "Name not Found")
            }
        case .Failure(let error):
            self.alertMessage(message: "Error 4xx / 5xx: \(error)")
        }
}

或者,在 Swift 3 中:

Alamofire.request(url)
    .validate()    // or, if you just want to check status codes, validate(statusCode: 200..<300)
    .responseJSON { response in
        switch response.result {
        case .success(let value):
            let json = JSON(value)

            if let name = json["name"].string {
                self.alertMessage(message: "Name Found: \(name)")
            } else {
                self.alertMessage(message: "Name not Found")
            }
        case .failure(let error):
            self.alertMessage(message: "Error 4xx / 5xx: \(error)")
        }
}

另请注意,您可能应该将 response.result.value 的检查移至 Success 部分(或者只获取 value通过那里)。此外,确定是否找到 name 是倒退的。

关于ios - 在 Swift 2 中使用 Alamofire 进行错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35975233/

相关文章:

powershell - 每个用户的错误处理

ios - 无法将类型 '()' (0x2c2fb50) 的值转换为 'Swift.AnyObject

ios - 将 Swift 3.0 的选择器转换为 2.2

ios - Facebook iOS SDK FBSDKAccessToken.currentAccessToken() 即使在登录时也为零?

ios - 检查 super View 是否是 UITableViewController UIViewController?

ios - 如果 dispatch_sync 不使用不同的线程,它会更快吗?

php - 如何在 MAMP 上显示错误?

node.js - 处理 Node.js 中的错误和异常日志记录

ios - Swift 中特定于语言的日期本地化

ios - iPad 的 Xcode 7 Storyboard问题