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

标签 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 {

 }

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

最佳答案

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

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

关于ios - 当我使用 NSURLSessionDataTask 下载任务时进度条无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35864311/

相关文章:

ios - CGRect 调用中的 Swift 额外参数 "width"

ios - 导航项不显示

ios - 如何在 objective-c 中为复杂线形的绘制设置动画

android - 进度条动画

javascript - 仅在使用 ajax 上传文件时显示进度条

ios - 如何使用 SWIFT 从 iPhone 上传图片到 Google App Engine blobstore?

ios - 使用 exit-segue 时的 viewWillAppear 和 viewDidAppear

ios - 当应用程序在后台运行时显示 UIAlert?

iphone - 从 Objective-C 类调用 C++ 函数

javascript - 在 Google Apps 脚本中从服务器端通信到客户端