Как использовать NSOperationQueue для загрузки аудиофайлов с сервера по одному

У меня есть массив, содержащий URL-адрес аудиофайла. Я хочу получать аудиофайлы с сервера, используя эти URL-адреса в фоновом режиме. Я слышал, что могу добиться этого с помощью NSOperationQueue. Мой запрос

1) Как я могу этого добиться.

2) Как я могу перезвонить при завершении/сбое одной операции

3) Как я могу перезвонить после завершения всего процесса.

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

Любая идея будет полезна, так как я новичок в NSOperationQueue.


person Mahesh Paymal    schedule 23.05.2013    source источник


Ответы (2)


Похоже, что в AFNetworking есть все, что вам нужно (блокировка обратного вызова для успеха/неудачи, размещение запросов в NSOperationQueue). В вашем случае, вероятно, AFHttpClient и его метод enqueueHTTPRequestOperation сделают эту работу.

person Michał Ciuba    schedule 23.05.2013

NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(download:) object:aAudio];
[queue addOperation:operation];//added code
[operation release];   

теперь делайте то, что хотите, в методе download. в соответствии с doc набором [queue setMaxConcurrentOperationCount:1] для по одному.

person user23790    schedule 23.05.2013
comment
Извините за поздний ответ, но я сделал это с помощью библиотеки ASIHTTPRequest. Легко реализовать и дает мне все, что я хочу. Но позже я обнаружил, что он устарел. Итак, погуглил и нашел несколько полезных библиотек для достижения этой цели. Об одном из них упоминает Михал Чуба в комментариях выше. Для таких операций можно использовать следующее: 1) AFNetworking 2) LRResty 3) RestKit 4) AWS SDK для iOS 5) ShareKit 6) NSURLRequest/NSURLConnection Подробнее ссылка - person Mahesh Paymal; 17.07.2013