Проверьте загрузку с другого контроллера представления AFNetworking iOS

У меня есть ViewController с UITableView внутри него, в котором перечислены файлы, находящиеся на сервере. Каждая ячейка этой таблицы имеет несколько индикаторов, которые показывают ход загрузки и другие данные.

Проблема:

Когда я возвращаюсь к другому ViewController и возвращаюсь к контроллеру с TableView, прогресс и индикаторы в ячейке выглядят так, как будто файл не загружается, но файл все еще загружается в фоновом режиме.

Мое возможное решение:

Имея глобальный NSMutableArray, который содержит все загрузки в нескольких объектах NSDictionary (каждый словарь является загрузкой, у него есть прогресс, индекс строки).

Если я выйду из своего ViewController с таблицей и вернусь, я проверяю, выполняются ли какие-либо загрузки (путем подсчета объектов в массиве загрузок) и запускаю таймер, который будет обновлять каждый из элементов в массиве загрузок и отправлять изменения в табличное представление.

(Я использую AFURLConnectionOperation с progressBlock для обновления индикаторов)

Есть ли лучшее решение? Спасибо!


person facumedica    schedule 18.08.2015    source источник


Ответы (2)


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

Однако то, что кажется неправильным, - это использование таймера. Вместо таймера, который опрашивает ход загрузки и соответственно обновляет таблицу, я бы посоветовал какой-нибудь подход, основанный на уведомлениях, при котором загрузчик отправляет уведомления [NSNotificationCenter defaultCenter] по мере выполнения/завершения загрузки, а затем регистрирует контроллер представления в качестве наблюдателя для этих уведомлений, обновление пользовательского интерфейса по мере поступления уведомлений.

person Rob    schedule 18.08.2015
comment
Спасибо, я сделал уведомление об изменениях и отправляю изменения в него в виде NSArray, который содержит ход выполнения и индекс строки. Затем я сделаю уведомление об окончании. Кажется, работает нормально, еще раз спасибо. - person facumedica; 18.08.2015

Я рекомендую вам пройти этот урок:

http://www.raywenderlich.com/51127/nsurlsession-tutorial

который должен дать вам ответ о том, как обращаться с вашим делом.

person Anand    schedule 18.08.2015