#swift #xcode #firebase #google-cloud-firestore
#swift #xcode #firebase #google-облако-firestore
Вопрос:
У меня есть следующий базовый код, реализованный для загрузки изображения из Firebase. Функция вызывается из ячейки UICollectionViewCell. Бывают случаи, когда пользователь может быстро прокручивать ячейку, и в этих случаях я хотел бы отменить задачу загрузки .getData, если она еще не вернулась. Есть ли способ отменить .getData?
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)
}
}
}
}
Ответ №1:
Если вы записываете операции хранения 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()
https://firebase.google.com/docs/storage/ios/download-files ?authuser=0#manage_downloads
Комментарии:
1. Это именно то, что я искал. Спасибо!