0

这是我的想法,我有一个MasterViewControllerthat 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 中使用它。我尽量解释清楚,希望有人给我任何建议。提前致谢。

4

0 回答 0