Как безопасно распаковать опциональные объекты (объект ответа AlamoFire) в Swift - PullRequest
0 голосов
/ 29 ноября 2018

Я использую приведенный ниже код для загрузки данных с сервера.Согласно Crashlytics, мы видим, что произошел сбой (EXC_BREAKPOINT) в условной оценке (оператор if).Я подозреваю, что это потому, что код, распаковывающий необязательный элемент "statusCode" - я новичок в Swift (10 лет занимаюсь Obj-C) - и я не уверен, что самый лучший и безопасный способ - распаковать эту переменную без сбоя.

Обратите внимание, что это приложение использует SwiftyJSON, хотя я не думаю, что это актуально.

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

1 Ответ

0 голосов
/ 29 ноября 2018
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 объясняют это подробно.

...