如何使用ASINetworkQueue显示多个下载进度

时间:2012-04-26 12:41:46

标签: iphone multithreading download asihttprequest uiprogressview

我想在多次点击按钮上执行下载,这些按钮是动态创建的。每个按钮都分配有不同的网址。

我想同时执行多个下载操作,并且还希望更新不同UIProgressView上每个下载的下载进度。

有人告诉我要使用ASINetworkQueue方法,但在这个方法中,如何动态地向队列添加请求?或者是否有其他方式或示例代码?

请帮忙。

示例代码:

- (void)fetchThisURLFiveTimes:(NSURL *)url
{
   [myQueue cancelAllOperations];
   [myQueue setDownloadProgressDelegate:myProgressIndicator];
   [myQueue setDelegate:self];
   [myQueue setRequestDidFinishSelector:@selector(queueComplete:)];
   int i;
   for (i=0; i<5; i++) {
      ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
      [myQueue addOperation:request];
   }
   [myQueue go];
}

- (void)queueComplete:(ASINetworkQueue *)queue
{
   NSLog(@"Value: %f", [myProgressIndicator progress]);
}

2 个答案:

答案 0 :(得分:1)

简单地向队列添加新的操作/请求:

  [networkQueue addOperation:<#(NSOperation *)#>]
  [networkQueue addOperations:<#(NSArray *)#> waitUntilFinished:<#(BOOL)#>]

您可以通过设置:

来跟踪特定请求的进度
  [request setDownloadProgressDelegate:<#(id)#>]
  

//如果downloadProgressDelegate是NSProgressIndicator,我们设置   它的MaxValue为1.0,所以我们可以更新它,好像它是一个UIProgressView

答案 1 :(得分:1)

我相信ASI已经不再受到支持了。我的公司已开始使用RestKit作为替代方案,仅供参考。请参阅页面顶部的标题:http://allseeing-i.com/ASIHTTPRequest/