我目前正在使用以下代码从Firebase存储中下载图像文件以获取UICollectionView
中的缩略图。当我点击其中一个缩略图时,该应用会转移到另一个UIViewController
然后下载更多Firebase存储中的图像。
目前,应用程序在下载UIViewController
中的下一个图像之前等待所有缩略图完成下载。是否可以在UIViewController
中增加新图像的优先级,或者取消所有其他下载以立即启动新图像?
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()
}
}
谢谢
答案 0 :(得分: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()
}