0

有幾個文件可以在特定的viewController中下載。當用戶點擊下載特定文件時,progressView似乎顯示下載的數據量。同時在特定的時間可以下載多個文件。由於該文件相當大,因此需要幾分鐘才能完成下載。問題是,當我去另一個ViewController,所有的下載停止,我不得不繼續下載ViewController,並等待下載完成。我正在使用NSURLSession下載數據。即使下載ViewController被解僱,是否有辦法讓下載進行?如何在其他ViewControllers中繼續下載數據

一個選項是我將代碼轉移到appDelegate。有沒有其他方便的方法來完成這項任務。

+0

如果您需要一些額外的信息,我忘了在這裏提到,請提及 –

+0

問題em是,你可能正在使用主線程執行下載任務,爲什麼不使用異步線程在後臺下載文件,並仍然將進度更新發送到主線程上的UI? – Satyam

+0

但問題是每個下載任務,我做了一個對象,有幾個標誌和屬性,如下載的數據,進度viewView等.....如何可能 –

回答

1

嘗試對AFNetworking https://github.com/AFNetworking/AFNetworking

可以在AppDelegate中定義該部分,但一定要使其可見一看(屬性)

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; 

然後在任意視圖讓他們和啓動下載任務

NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"]; 

NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { 
    NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; 
    return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]; 
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { 
    NSLog(@"File downloaded to: %@", filePath); 
}]; 
[downloadTask resume]; 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }];