使用此代码下载我的设备上的文件。但在99%加载界面停止(我不能点击按钮)。 20秒后一切正常,加载= 100%。为什么接口在99%加载时停止?如何解决它?在设备上下载文件是阻止接口
- (void)viewDidLoad
{
dispatch_async(dispatch_get_main_queue(), ^{
_session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
});
[self.progressView setProgress:0 animated:NO];
}
- (IBAction)btnClicked:(id)sender {
if(_downloadTask == nil){
_url =[NSURL URLWithString:@"https://www.nsw.gov.au/sites/default/files/bg-view-nsw-media.png"];
_downloadTask = [_session downloadTaskWithURL:_url1];
[_downloadTask resume];
}
else
[_downloadTask resume];
}
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{
dispatch_async(dispatch_get_main_queue(), ^{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"image1.mp3"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:NO];
NSData *urlData = [NSData dataWithContentsOfURL:_url];
[urlData writeToFile:filePath atomically:YES];
}
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite;
{
dispatch_async(dispatch_get_main_queue(), ^{
[ _progressView setProgress:totalBytesWritten/totalBytesExpectedToWrite animated:YES];
NSString *percentage = [NSString stringWithFormat:@"%d%%", (int)((totalBytesWritten/totalBytesExpectedToWrite)*100)];
[_label setText:[NSString stringWithFormat:@"%@%%", percentage]];
NSLog(@"%lld", totalBytesWritten);
_label = [[UILabel alloc]initWithFrame:CGRectMake(91, 15, 500, 50)];
[_label setText: percentage];
_label.numberOfLines = 1;
_label.backgroundColor = [UIColor blackColor];
_label.textColor = [UIColor whiteColor];
_label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:_label];
});
UPD
然后我删除此代码
NSData *urlData = [NSData dataWithContentsOfURL:_url];
[urlData writeToFile:filePath atomically:YES];
一切正常
不起作用。代码中看起来像什么? – user214155
我觉得这行[urlData writeToFile:filePath atomically:YES]; (可能是上面的那个)必须在后台调用。 – AnthoPak
我更新我的问题。请检查 – user214155