Запрос Alamofire приводит к сбою моего приложения при медленном соединении - PullRequest
0 голосов
/ 08 апреля 2019

У меня проблема с приложением 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 Ответ

1 голос
/ 08 апреля 2019

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.

...