2016-02-26 38 views
0

任何人都可以提出一個下載多個文件的解決方案,說100秒,在後臺。重要的是,下載網址的使用壽命爲15分鐘,因此我們需要獲取下載網址並開始下載。我們無法預取所有網址並將其添加到下載任務,因爲這可能會導致在幾次成功下載後下載失效的網址。在後臺狀態下載多個小文件

在此先感謝。

回答

0

,你可以做到以下幾點:

var data : NSData?{ 
    didSet{ 
    //Parse the data to any thing you want 
    } 
} 
var urlFetchedAsString : String? { 
    didSet{ 
     if(urlFetchedAsString == nil) 
      return 
     let url : NSURL = NSURL(string: urlFetchedAsString!)! 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), { 
    () -> Void in 
    data = NSData(contentsOfURL: url) 
    }) 
    } 
} 
func fetchURL() ->String{ 
    //Fetched Your url and return 
} 
override func viewDidLoad(){ 
    super.viewDidLoad() 
    urlFetchedAsString = fetchURL() 
} 

說明

  • 操作系統在變量urlFetchedAsString每次設置
  • 的didSet塊將時間將執行didSet塊從url中獲取數據並將其保存爲NSData
  • dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)意味着從URL中獲取數據將在不同的線程來完成,以防止阻塞UI線程
  • 做節省了您的變量data將被設置和didSet這個變量將被執行之後。在這個塊中,你可以實現你的解析算法。
  • 擷取網址本身是你的,因爲你沒有澄清他們在哪裏或u如何讓他們

注意

  • 在這裏,我假設你不t需要複製所有的網址,因爲如你所說,它們將在15分鐘後到期