0

ここに考えがあります、私はMasterViewControllerそれがありUIViewController、これがプロトコル<NSURLSessionDelegate>であり、完全に正常に実行されるコードがいくつかあります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