Firebase - 下载少量文件



有没有办法使用 Firebase 存储 SDK 下载几个文件(图片)并实时缓存这些文件,以便在下载图片后更新缓存?

我还可以在另一个视图控制器中观察此缓存是否正在更新吗?

我不需要完整的答案,只需要一个提示在哪里学习它。我已经搜索了Firebase文档,找到了一些信息,但我完全不知道如何使用它。

看看NSURLCache .基本上,您要做的是,每次将文件上传到Firebase存储时,您都可以获取下载URL并下载它,然后storeCachedResponse:forRequest: URL缓存中。由于此缓存是共享的,因此您甚至可以跨活动获取它。

同样,在下载时,您需要通过cachedResponseForRequest:检查缓存的请求,如果它不存在,则执行下载(此时您将缓存请求以供以后使用)。

从长远来看,我们希望为您启用开箱即用的这种行为,但现在,您可以使用NSURLCache来实现它:)

我仍然没有找到从Firebase Storage SDK中执行此操作的方法。这是我从 bhlvoong 教程中获得的一些代码,用于使用 NSCache 缓存图像。

import UIKit
let imageCache = NSCache<AnyObject, AnyObject>()
extension UIImageView {
    func loadImageUsingCacheWithUrlString(urlString: String) {
        self.image = nil
        //check cache for image first
        if let cachedImage = imageCache.object(forKey: urlString as NSString) as? UIImage {
            self.image = cachedImage
            return
        }
        //otherwise fire off a new download
        let url = NSURL(string: urlString)
        URLSession.shared.dataTask(with: url as! URL, completionHandler: { (data, response, error) in
            //download hit an error so lets return out
            if error != nil {
                print(error)
                return
            }
            DispatchQueue.main.async {
                if let downloadedImage = UIImage(data: data!) {
                    imageCache.setObject(downloadedImage, forKey: urlString as NSString)
                    self.image = downloadedImage
                }
            }

        }).resume()
    }

}

相关内容

  • 没有找到相关文章

最新更新