ここに考えがあります、私は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 で必要になります。誰かが私にアドバイスをくれることを願って、私はできる限り明確に説明しようとします. 前もって感謝します。