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

时间:2018-11-28 23:54:25

标签: 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

1 个答案:

答案 0 :(得分:0)

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的{​​{1}}。

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

对于更一般的情况,应避免强行展开。使用200..<300guard解开可选的内容。 Swift文档对此进行了详细解释。