2011-12-04 1 views
0

IAM, используя для загрузки нескольких файлов с помощью объездной ASIHTTPRequest в очереди операций ...Получить Multiple обновление выполнения загрузки каждой загрузки с помощью NSOperationQueue и 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-адреса в отдельности ... и как я отменяю каждый из них, не отменя всех операций. Thanks

ответ

2

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

Поэтому у меня есть другое предложение: author of ASIHTTPRequest library has stopped developing the library, так что вы могли бы переключиться на что-то еще. Он предлагает, например, AFNetworking, но многие люди рекомендуют в наши дни MKNetworkKit. Кажется, у него довольно хорошая обработка очереди.

+0

Спасибо за ваш повтор, но вы можете выслать мне больше информации о MKNetworkKit, как я могу использовать вашу документацию относительно этого решения ... –

+0

http://blog.mugunthkumar.com/products/ios-framework-introducing-mknetworkkit/ – JOM

0

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

+0

Можете ли вы уточнить больше, пожалуйста, я не могу вас огорчить ??? –

+0

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

+0

, но нет параметра запроса ASIHTTPRequest * send в Setprogress, поэтому я могу получить информацию о запросе ... –