Запрос Alamofire приводит к сбою моего приложения при медленном соединении

#ios #swift #alamofire

#iOS #swift #alamofire

Вопрос:

Я сталкиваюсь с проблемой с моим приложением ios. Я использую Alamofire для отправки http-запросов к моему REST API.

Все работало нормально, пока мое приложение не работало на 2G или медленном соединении. Это приводит к сбою приложения без какого-либо сообщения об ошибке в моем отладчике.

Вот пример моего вызова API, я думаю, что я делаю это правильно.

Вы знаете, что я могу сделать для обработки медленных подключений?

Спасибо вам за ваш ответ

 AF.request(url_to_call, method: .patch, headers: headers).responseJSON{response in
    let error_code = response.response?.allHeaderFields["Nx-Error-Code"] ?? "200"

    if (error_code as! String != "200"){
        parseErrorCode(code: error_code as! String)
    } else {
        do{
            let json = try JSON(data: response.data!)
            print(json)
        } catch {
            print(error)
        }
    }
}
  

Ответ №1:

Alamofire не приводит к сбою вашего приложения, вы приводите к сбою вашего приложения, принудительно разворачивая response.data значение, когда оно может не существовать (например, время ожидания). На самом простом уровне вам нужно переключить response.result значение, а затем обработать случаи успеха и сбоя.

 AF.request(url_to_call, method: .patch, headers: headers).responseJSON { response in
    switch response.result {
    case let .success(value): // Handle success.
    case let .failure(error): // Handle failure.
    }
}
  

Для тайм-аутов или других системных ошибок вы увидите ошибку в .failure случае. Для других вещей, таких как проверка кода ответа, вы можете добавить validate() вызов перед responseJSON .

Комментарии:

1. Спасибо за ваш ответ! Я думаю, что это сработает;)