ios - 如何在 Swift 中安全地解压选项(AlamoFire 响应对象)

标签 ios swift swifty-json

我正在使用以下代码从服务器下载数据。根据 Crashlytics 的说法,我们看到条件评估(“if”语句)发生了崩溃(EXC_BREAKPOINT)。我怀疑这是因为解压可选成员“statusCode”的代码 - 我是 Swift 新手(做了 Obj-C 10 年) - 而且我不确定最好、最安全的方法是解压这个变量而不导致崩溃。

请注意,此应用程序使用 SwiftyJSON,尽管我认为这不相关。

    Alamofire.request(url).responseJSON { (response) in
        if (response.response?.statusCode)! >= 200 && (response.response?.statusCode)! < 300

最佳答案

Alamofire.request(url).validate().responseJSON { response in
    switch response.result {
    case .success(let json):
        // do something with json
    case .failure(let error):
        // handle error
    }
}

validate()方法替换您检查 statusCode 的行。默认使用 acceptableStatusCodes分别是200..<300 .

我认为这是处理这种特定情况的最佳方法。

对于更一般的情况,您应该避免强制展开。使用 guard 解开可选内容或if let 。 Swift 文档详细解释了这一点。

关于ios - 如何在 Swift 中安全地解压选项(AlamoFire 响应对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53529885/

相关文章:

swift - 当用户点击主页按钮时在应用程序中切换 UISwitch

ios - 如何获得 UISlider 的默认 maximumTrackTintColor

ios - 从 View 框架内编辑 UILabel

json - 使用 SwiftyJSON 解析 JSON 时出现问题

json - oAuth 使用 SwiftyJSON 读取结果?

ios - 尝试使用 Json 数据创建对象

ios - "Received memory warning"在 ios 中使用 NSThread 时

ios - 如何给 UITextView 或 UILabel 添加滑动解锁效果?

ios - 无法使用 Swift 对 UITextField 上的对象进行正则表达式匹配

ios - 有没有办法将 iPhone 键盘设置为全部大写而不通过委托(delegate)