複数のファイルをバックグラウンドでダウンロードするための解決策を誰かが提案できますか。重要なことは、ダウンロード URL の寿命は 15 分間であるため、ダウンロード URL を取得してからダウンロードを開始する必要があることです。すべての URL をプリフェッチしてダウンロード タスクに追加することはできません。数回ダウンロードが成功した後、期限切れの URL のダウンロードが失敗する可能性があるためです。
前もって感謝します。
複数のファイルをバックグラウンドでダウンロードするための解決策を誰かが提案できますか。重要なことは、ダウンロード URL の寿命は 15 分間であるため、ダウンロード URL を取得してからダウンロードを開始する必要があることです。すべての URL をプリフェッチしてダウンロード タスクに追加することはできません。数回ダウンロードが成功した後、期限切れの URL のダウンロードが失敗する可能性があるためです。
前もって感謝します。
次のことができます。
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
OS は、変数が設定されるたびに、変数の didSet ブロックを実行します。NSData
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)
UIスレッドのブロックを防ぐために、URLからのデータのフェッチが別のスレッドで行われることを意味しますdata
が設定され、didSet
この変数の が実行されます。このブロックでは、解析アルゴリズムを実装できます。ノート