我有个小问题。我从 Firebase 获取图像,我正在尝试添加缓存,因为我尝试过这种方式,但像这样它们没有被缓存:
我声明了这个变量
var uid:String = ""
var partitionUrl:String = ""
var titre:String = ""
然后链接到 firebase。
let storageRef = FIRStorage.storage().reference()
let databaseRef = FIRDatabase.database().reference().child("canticles")
应用使用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
})
})
}
}
问题是当电话没有连接时,图像不出现。 我可以做些什么来解决这个问题,方法是为图像添加缓存,然后它会离线显示?
最佳答案
我就是这样进行的
第一次用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)
}
}
}
关于ios - 从 firebase 加载图像并缓存 swift3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821830/