从firebase加载图像并缓存swift3

Posted

技术标签:

【中文标题】从firebase加载图像并缓存swift3【英文标题】:load image from firebase and caching swift3 【发布时间】:2017-06-29 09:51:59 【问题描述】:

我有一个小问题。我从 Firebase 获取图像,我正在尝试添加缓存,因为我尝试过这种方式,但像这样它们没有被缓存:

我声明了这个变量

var uid:String = ""
var partitionUrl:String = ""
var titre:String = ""

这个链接到firebase。

let storageRef = FIRStorage.storage().reference()
let databaseRef = FIRDatabase.database().reference().child("canticles")

app使用uid获取标题和图片并在UIlabel和UIImageView中展示

@IBOutlet weak var titleCantique: UILabel!
@IBOutlet weak var partitionImageView: UIImageView!

override func viewDidLoad() 
    super.viewDidLoad()

    getPartitionImage()


override func viewWillAppear(_ animated: Bool) 
    print("partition uid : " + uid)
    print("partition URL : " + partitionUrl)
    print("partition TITLE : " + titre)
    self.titleCantique.text = titre


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()


func getPartitionImage()

        DispatchQueue.main.async(execute: 
            self.storageRef.child(self.partitionUrl).data(withMaxSize: 10*1024*1024, completion:  (data, error) in

            if error != nil 
            print(error!)
            return

            
            let image = UIImage(data: data!)
            self.partitionImageView.image = image
        )
    )
  

问题是当手机未连接时,图像没有出现。 我可以通过为图像添加缓存然后离线显示来解决这个问题?

【问题讨论】:

【参考方案1】:

我就是这样进行的

第一次,我用 cocoapod 添加了 FirebaseStorageCache

在 swift 文件中:

import UIKit
import Firebase
import FirebaseStorageCache

并像这样实现了我的 getPartitionImage 函数

func getPartitionImage() 

    let ref: FIRStorageReference = self.storageRef.child(self.partitionUrl)

    FirebaseStorageCache.main.get(storageReference: ref)  data in

        self.partitionImageView.setImage(storageReference: ref)


    
  

【讨论】:

以上是关于从firebase加载图像并缓存swift3的主要内容,如果未能解决你的问题,请参考以下文章

从firebase异步加载图像时出错

如何从 Firebase 存储中的文件夹加载图像并在其他地方使用它

为 Firebase 存储中的文件设置缓存

使用 getDownloadURL() 从 firebase 存储加载图像不起作用

从 Firebase Swift 加载后单元格不显示图像

React Native - 将图像从本地缓存发送到 Firebase 存储