我正在使用 AFDownloadRequestOperation 通过AFNetworking Framework下载文件,每当我在下载时暂停文件,然后再恢复它时, setProgressiveDownloadProgressBlock 就会开始从零返回 totalBytesRead 的值,而部分下载了文件。因此,显示文件调用剩余百分比之后的块 setCompletionBlockWithSuccess

但是,我想在进度栏中显示适当的进度,那么我应该如何获得文件下载的适当百分比?

最佳答案

这就是我用的

 [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
            NSLog(@"Operation%i: bytesRead               : %d", i, bytesRead);
            NSLog(@"Operation%i: totalBytesRead          : %lld", i, totalBytesRead);
            NSLog(@"Operation%i: totalBytesExpectedToRead: %lld", i, totalBytesExpectedToRead);

            if (totalBytesExpectedToRead > 0)
            {
                 self.progressView.progress = (float)totalBytesRead / totalBytesExpectedToRead;
            }
        }];

引入检查的原因是,有时总totalsBytesExpectedToRead可能变为-1,这会破坏progressview的进度平滑度[还请注意,由于NSUrlconnection的问题,hrader返回-1作为预期的读取大小]
(float)totalBytesRead / totalBytesExpectedToRead * 100给出百分比

10-08 07:29