#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. Спасибо за ваш ответ! Я думаю, что это сработает;)