这是我的想法,我有一个MasterViewController
that is aUIViewController
和这个协议<NSURLSessionDelegate>
,我有一些代码在 a 中运行得非常好IBAction
编码...
- (IBAction)testing:(id)sender
{
DataWeb *fdi = [self.arrIniFile objectAtIndex:0]; //array with some object
fdi.downloadTask = [self.session downloadTaskWithURL:[NSURL URLWithString:fdi.downloadSource]];
fdi.taskIdentifier = fdi.downloadTask.taskIdentifier;
[fdi.downloadTask resume];
}
但我真正需要的是以viewDidLoad
这种方式运行该代码......
- (void)viewDidLoad
{
[super viewDidLoad];
//Need to run this code here
DataWeb *fdi = [self.arrIniFile objectAtIndex:0]; //array with some object
fdi.downloadTask = [self.session downloadTaskWithURL:[NSURL URLWithString:fdi.downloadSource]];
fdi.taskIdentifier = fdi.downloadTask.taskIdentifier;
[fdi.downloadTask resume];
NSArray *URLs = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
self.docDirectoryURL = [URLs objectAtIndex:0];
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.myApp"];
sessionConfiguration.HTTPMaximumConnectionsPerHost = 5;
self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration
delegate:self
delegateQueue:nil];
}
这是因为,我需要在viewDidLoad
完成加载文件[self.arrIniFile objectAtIndex:0]
(并且该对象具有 NSString 属性fdi.downloadSource
)时文件开始下载并在后台完成,而无需用户进行任何交互。
接口文件(h)有这个标题
@interface MasterViewController : UIViewController <NSURLSessionDelegate>
,我用这个协议方法
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
但是当我使用 viewDidLoad 时,该代码永远不会被触发,只是在 IBAction 中,我需要在 viewDidLoad 中使用它。我尽量解释清楚,希望有人给我任何建议。提前致谢。