Обработка сломанной загрузки - PullRequest
1 голос
/ 18 октября 2011

Я разработал приложение, которое будет загружать некоторые данные с сервера, и все работает нормально, если нет проблем с сетью.Однако, если во время загрузки наблюдаются некоторые колебания сети, некоторые данные не будут загружены, и приложение вылетит.Здесь мне нужна помощь от вас, ребята.Могу ли я написать отдельный код для обработки такой ситуации и повторно загрузить все данные, удалив неполные загруженные данные.Заранее спасибо,

Ответы [ 3 ]

1 голос
/ 18 октября 2011

Да.Вы можете сделать это.
Есть две ситуации
1. Сеть недоступна.
- -> Чтобы исправить это, вы должны использовать пример кода «Rechability» (Предоставлено Apple).Перед началом загрузки необходимо проверить доступность Интернета.
- -> Или, если вы не проверяете возможность подключения к Интернету, вы получите код ошибки (404) в методе делегата соединения NSURL:
- (void) соединение: (NSURLConnection *) соединение didReceiveResponse: (NSURLResponse *) ответ
2. Колебания сети.
Здесь я имею в виду промежуточную загрузку, если сеть колеблется.Затем он вызовет метод ниже
- (void) соединение: (NSURLConnection *) соединение didFailWithError: (NSError *) ошибка
Вы можете обрабатывать все вещи внутри этого метода

0 голосов
/ 18 октября 2011

Адитья прав. Предположим, что вы используете NSURLConnection. Если ваше соединение разрывается, вы можете прочитать код ответа, используя следующий метод делегата,

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response {
     NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
     int responseStatusCode = [httpResponse statusCode];
}

и вы можете продолжить соединение и удалить незаконченные данные для загрузки.


Обновлен ответ на комментарий.

Если вы используете разные соединения в разных классах, это должно быть реализовано в каждом из классов. По моему мнению, у вас должен быть такой дизайн, в котором определенный класс будет обрабатывать все связанные с подключением задачи (Может быть, это не будет соответствовать вашим требованиям). Но для вашего текущего дизайна вы должны использовать это во всех ваших классах.

0 голосов
/ 18 октября 2011

При возникновении любых колебаний в сети или подобных проблем вы должны получить код ошибки HTTP, если вы используете NSURLConnection или любые другие сетевые API-интерфейсы.Вы можете использовать это, чтобы удалить неполные загруженные данные и сообщить код контроллера, чтобы он мог решить, следует ли повторно загружать и т. Д.

...