我是NSURLSession的新手,我在其他stackoverflow问题中找不到答案。所以我发布这个。
我的ViewController中有一个Button和ProgressBar。使用NSURLSessionDownloadTask
的实例,我按以下方式调用resume
@property (nonatomic, strong) NSURLSessionDownloadTask *downloadTask;
在@interface
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
self.downloadTask = [session downloadTaskWithURL:url];
在@implementation
上方指定上面的行,并在buttonclick上调用resume
方法,如下所示
-(void) buttonpressed:(id)sender{
[self.downloadTask resume];
}
这里发生的是,
当我第一次点击按钮时,它会完美下载
(即调用正确的委托方法
downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite
& didFinishDownloadingToURL
但是当我再次点击按钮时,它没有下载(即代表方法没有调用)
1)我在哪里做错了?
2)如果我第二次点击按钮,我想再次下载。什么 我该怎么做?
感谢任何帮助,感谢时间(:
答案 0 :(得分:1)
resume
仅适用于已暂停的任务,您的任务已完成。简单的解决方法是在同一个函数中创建并开始(真正地,恢复)任务。
- (void)setupAndStartDownload {
// your setup code, from the OP
// then start it here
[self.downloadTask resume];
}
-(void) buttonpressed:(id)sender{
[self setupAndStartDownload];
}