0

複数のファイルをバックグラウンドでダウンロードするための解決策を誰かが提案できますか。重要なことは、ダウンロード URL の寿命は 15 分間であるため、ダウンロード URL を取得してからダウンロードを開始する必要があることです。すべての URL をプリフェッチしてダウンロード タスクに追加することはできません。数回ダウンロードが成功した後、期限切れの URL のダウンロードが失敗する可能性があるためです。

前もって感謝します。

4

1 に答える 1

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()
}

説明

  • urlFetchedAsStringOS は、変数が設定されるたびに、変数の didSet ブロックを実行します。
  • didSet ブロックは、URL からデータを取得し、それらを次のように保存します。NSData
  • dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)UIスレッドのブロックを防ぐために、URLからのデータのフェッチが別のスレッドで行われることを意味します
  • 保存が完了すると、変数dataが設定され、didSetこの変数の が実行されます。このブロックでは、解析アルゴリズムを実装できます。
  • URL自体の取得はあなた次第です。それらがどこにあるか、またはどのように取得するかを明確にしていないためです

ノート

  • ここでは、すべての URL をコピーする必要はないと仮定しました。なぜなら、あなたが言ったように、URL は 15 分で期限切れになるからです
于 2016-02-26T12:54:18.183 に答える