2017-09-08 51 views
1

我當前正在從下面的代碼下載Firebase Storage中的圖像文件,以獲得縮略圖UICollectionView。當我點擊其中一個縮略圖時,該應用會跳到另一個UIViewController,然後從Firebase下載更多圖像存儲。 目前該應用程序在下載UIViewController中的下一張圖像之前會等待所有縮略圖完成下載。是否可以增加UIViewController中新圖像的優先級或取消所有其他下載以立即開始新圖像?Firebase下載任務隊列Swift

var imageRef = storageRef.child("Thumbnails/\(itemID).jpg") 
imageRef.getData(maxSize: 10 * 1024 * 1024) { data, error 
    if let error = error { 
     // Uh-oh, an error occurred! 
     print("Error: \(error.localizedDescription)") 
    } else { 
     let image = UIImage(data: data!) 
     self.newsNameArray.append(name) 
     self.newsImageArray.append(image!) 
     self.newsBarCollectionView?.reloadData()       
     } 
} 

謝謝

回答

1

你可以得到這樣一個StorageDownloadTask的引用:在陣列

var allTasks: [StorageDownloadTask] = [] 

var imageRef = storageRef.child("Thumbnails/\(itemID).jpg") 
let downloadTask = imageRef.getData(maxSize: 10 * 1024 * 1024) { data, error 
    if let error = error { 
     // Uh-oh, an error occurred! 
     print("Error: \(error.localizedDescription)") 
    } else { 
     let image = UIImage(data: data!) 
     self.newsNameArray.append(name) 
     self.newsImageArray.append(image!) 
     self.newsBarCollectionView?.reloadData()       
     } 
} 

存儲您的downloadTasks和下載新的圖像前取消所有任務:

allTasks.append(downloadTask) 

... 

for task in allTasks { 
    task.cancel() 
}