Получение нескольких обновлений прогресса загрузки для каждой загрузки с использованием NSOperationQueue и ASIHTTPRequest - PullRequest
0 голосов
/ 05 декабря 2011

Я использую для загрузки нескольких файлов, используя обход ASIHTTPRequest в очередь операций ...

    NSInvocationOperation *operation =[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(DownloadFile:) object:url];
.
.
.

-(void)DownloadFile:(NSURL)url{
      ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
        [request setDownloadProgressDelegate:self];
        [request setDidFailSelector:@selector(requestWentWrong:)];
        [request setDidFinishSelector:@selector(requestFinished:)];
        [request setDelegate:self];
        [request startSynchronous];
}

- (void)setProgress:(float)progress{    
    NSLog(@"Current progress %f :",progress);

}

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

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011

Сначала ответ на ваш вопрос: как насчет создания одного объекта «делегата» для каждой загрузки ? Тогда становится очевидным, как легко выполняется загрузка для каждой загрузки и отмены. Однако код будет более сложным.

Поэтому у меня есть еще одно предложение: автор библиотеки ASIHTTPRequest прекратил разработку библиотеки , поэтому вы можете переключиться на что-то еще . Например, он предлагает AFNetworking , но в настоящее время многие рекомендуют MKNetworkKit . Кажется, у него довольно хорошая обработка очереди.

0 голосов
/ 05 декабря 2011

Обратите внимание на подпись делегатов: каждое из них принимает аргумент.Этот аргумент является запросом, отправляющим вам сообщение: запрос, когда он отправляет вам сообщение делегата, включается в число аргументов, чтобы вы знали, какой запрос дошел до этого уровня.

...