当我开始使用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 {
}
这些是我用来实现的代码。
答案 0 :(得分:1)
应确保所有UI更新都在主队列中运行
dispatch_async(dispatch_get_main_queue(), ^{
self.progressView.progress=[ self.dataToDownload length ]/_downloadSize;
});