Что произошло после того, как загрузка NKIssue завершилась из-за недоступности сети?

У меня есть приложение NewsStand, когда пользователь забирает кнопку загрузки, мы загружаем проблему, используя

[nkAssetDownload downloadWithDelegate: self];

Теперь между загрузкой предположим, что сетевые разъединения, NSURLConnection вызывает метод didFailWithError: (NSError *). Я информирую об этом пользователя с пользовательским интерфейсом оповещения и обновления, чтобы активировать кнопку загрузки. Теперь, когда пользователь нажимает кнопку «загрузить», я проверяю

if (nkIssue.downloadingAssets.count == 1) {снова начать загрузку с помощью [nkIssue.downloadingAssets objectAtIndex: 0]; } else {начать загрузку с помощью nkAssetDownload = [nkIssue addAssetWithRequest: urlRequest]; }

У меня мало запросов об этом

1) Почему я всегда получаю nkIssue.downloadingAssets.count == 0, когда пользователь снова нажимает кнопку «загрузить»? Должна ли быть проблема, которая должна оставаться в очереди загрузки iOS?

2) После того, как пользователь снова нажал кнопку «загрузить», выпуск должен продолжить загрузку с той же позиции? Я не всегда наблюдаю за этим поведением, когда-то он начинает загрузку с самого начала (вздох).

Хотя, если я закрываю приложение, удаляю его из памяти (дважды нажмите кнопку «домой», долго нажмите значок приложения и удалите его), и снова запустите, я получаю [nkLib downloadingAssets] .count == 1 в «didFinishLaunchingWithOptions», и моя проблема возобновляет загрузку.

Все аспекты NewsStand не подтверждены Apple.

One Solution collect form web for “Что произошло после того, как загрузка NKIssue завершилась из-за недоступности сети?”

У меня есть две теории, если вы хотите исследовать дальше и не имеете лучших идей:

  1. Я удивлен, что NSURLConnection вызывает didFailWithError. Я ожидал, что загружающий актив останется в загрузке пакетов и будет автоматически повторен позже. Моя теория в том, что: метод didFailWithError является дополнительным, а Kit Newsstand работает по-разному в зависимости от того, реализуете ли вы этот метод или нет. NSURLConnection может проверить, что делегат отвечает на этот метод, чтобы принять это решение. Если вы реализуете метод и возникает сетевая ошибка, сообщение об ошибке сообщается с помощью метода didFailWithError. После того, как этот метод завершит выполнение, ресурс загрузки будет удален из библиотеки. Если вы не реализуете метод, загрузка не будет терпеть неудачу, и любые ошибки будут обработаны комплектом Newsstand: загружающий ресурс останется в очереди и будет отложен на неопределенный срок (насколько ваше программное обеспечение связано с тем, что загрузка никогда не завершится ).

  2. Если загрузка завершается с ошибкой (или завершается), вам сообщается метод обратного вызова делегата didFailWithError (или connectionDidFinishDownloading). Загружающий ресурс, вероятно, не будет удален из downloadAssets, пока этот метод не завершится. Если вы представляете предупреждение во время метода, актива не будет, когда пользователь снова нажмет кнопку «Загрузить».

Interesting Posts

UITableView отображает разделитель в неправильном положении в iOS8 для некоторых ячеек

iOS sqlcipher fmdb inTransaction «Файл зашифрован или не является базой данных»

Цвет нижнего колонтитула всегда темнее, чем цвет разделителя UITableView

родное приложение для связи с сервером

Выполнить сегу с анимацией NO?

ios сохранить видеоролик GPUImage

Изменение цвета фона UIWindow при вращении устройства

Загрузка изображения на Facebook на странице, правильно работающей в симуляторе, но не в устройстве

Ограничьте возможности приложений в IOS только для работы с данными Cell / WiFi.

Преобразование десятичных координат широты / долготы в координаты экрана iPad

Xcode iOS Instruments:

Обрезка изображения в портрете на iOS 7 приводит к неправильной ориентации

Установить выбранную ячейку по умолчанию в UITableViewController

плохой ориентации на экране с несколькими viewcontrollers / views в iOS 7, только ландшафт (iOS 8 в порядке)

FQL в бета-версии SDK 3.0 для iOS

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.