【问题标题】:Firebase - downloading few filesFirebase - 下载一些文件
【发布时间】:2016-09-27 01:03:50
【问题描述】:

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

我也可以在另一个视图控制器中观察这个缓存正在更新吗?

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

【问题讨论】:

    标签: ios swift firebase firebase-storage


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果你实现它并且有一个代码 sn-p(在 gist 或这里),我很想看看你想出了什么:)
    【解决方案2】:

    我仍然没有找到在 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()
        }
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      相关资源
      最近更新 更多