2017-08-11 87 views
1

我一次只能根據用戶需求下載文件,或者一個一個或一個下載文件。下載文件後,我將通知發送到另一個視圖作爲sucessfull消息。下載後臺線程中的多個文件?

當我一次下載單個文件時,它正在成功下載文件。但是當我試圖在6秒的時間間隔內下載兩個或多個文件(按下另一個下載按鈕)時,第一個文件不會被下載。它僅下載我發送下載的最後一個文件。

任何幫助,將不勝感激。

url=[NSURL URLWithString:currentURL]; 
NSMutableURLRequest * request = [[NSMutableURLRequest alloc]initWithURL:url]; 
[request setHTTPMethod:@"GET"]; 

NSURLConnection *connection=[[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES];   
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) 
    { //Background Thread 
     { 

     [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *dataMain, NSError *error) 
     { 
      if ([dataMain length]/1024.0f > 600 && error == nil) 
      { 

       [dataMain writeToFile:pathOriginal atomically:YES]; 
       NSLog(@"orginal file saved");  
      } 
     }]; 
     } 
    dispatch_async(dispatch_get_main_queue(), ^(void){ 
[[NSNotificationCenter defaultCenter] postNotificationName:@"TestNotification" object:self]; 
     }); }); 

回答

1

在每次調用之前使用調度異步。這樣每個電話都會在不同的線程上運行,並解決您的問題。

希望這會有所幫助!

+0

u能細說嗎? – Abhiram

+0

林移動不能發佈代碼片段,但複製此dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^(無效){// 後臺線程 dispatch_async(dispatch_get_main_queue(),^(無效){// 運行UI更新 }); }); –

+0

i相 – Abhiram

0

NSURLConnection已棄用。您應該使用NSURLSession進行新的開發。 NSURLSession將處理多個下載。 (所以纔會NSURLConnection,但它不值得調試,鑑於它的棄用。

+0

我使用的xcode 4.6 – Abhiram

+0

該代碼,但同樣的問題更新好主,爲什麼?這是4個主要版本過期 –

+0

和Xcode 9是在測試版,所以它很快將被5個主要版本過時 –