Swift/Firebase:是否取消下载图像?
我实现了以下基本代码以从Firebase下载图像。该函数是从UICollectionViewCell中调用的。在某些情况下,用户可能会快速滚动单元格,在这种情况下,如果.getData下载任务尚未返回,我希望取消该任务有没有办法取消.getData?Swift/Firebase:是否取消下载图像?,swift,xcode,firebase,google-cloud-firestore,Swift,Xcode,Firebase,Google Cloud Firestore,我实现了以下基本代码以从Firebase下载图像。该函数是从UICollectionViewCell中调用的。在某些情况下,用户可能会快速滚动单元格,在这种情况下,如果.getData下载任务尚未返回,我希望取消该任务有没有办法取消.getData? private func downloadImage(path: StorageReference, handler: @escaping (_ image: UIImage?) -> ()) { if let cachedI
private func downloadImage(path: StorageReference, handler: @escaping (_ image: UIImage?) -> ()) {
if let cachedImage = imageCache.object(forKey: path) {
handler(cachedImage)
} else {
path.getData(maxSize: 27 * 1024 * 1024) { (data, error) in
if let data = data, let image = UIImage(data: data) {
handler(image)
imageCache.setObject(image, forKey: path)
} else {
handler(nil)
guard let error = error else { return }
print(error)
}
}
}
}
如果将Firebase存储操作捕获为属性,则可以调用这些操作的方法来暂停、恢复或取消这些操作。例如:
let download = path.getData(maxSize: 27 * 1024 * 1024) { (data, error) in
if let data = data, let image = UIImage(data: data) {
handler(image)
imageCache.setObject(image, forKey: path)
} else {
handler(nil)
guard let error = error else { return }
print(error)
}
}
download.pause()
download.resume()
download.cancel()
这正是我想要的。谢谢