当我使用NSURLSessionDataTask下载任务时,进度条无法正常工作?

时间:2016-03-08 10:03:20

标签: ios objective-c progress-bar nsurlsession nsurlsessiondatatask

当我开始使用NSURLSessionDataTask下载文件时,进度一段时间没有进行。然后在完成下载后只显示全蓝色的进度条。

我的代码

 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler

  {
completionHandler(NSURLSessionResponseAllow);
 NSLog(@"Response:%@ \n", response);
self.progressView.progress=0.0f;

   self.downloadSize=[response expectedContentLength];
self.dataToDownload=[[NSMutableData alloc]init];

}


  - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data  {


[self.dataToDownload appendData:data];

self.progressView.progress=[ self.dataToDownload length ]/_downloadSize;
}



  - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask  *)task
didCompleteWithError:(NSError *)error {

if (error) {


    // Handle error
}
else {

 }

这些是我用来实现的代码。

1 个答案:

答案 0 :(得分:1)

应确保所有UI更新都在主队列中运行

dispatch_async(dispatch_get_main_queue(), ^{
   self.progressView.progress=[ self.dataToDownload length ]/_downloadSize;
});