ios - 从 firebase 加载图像并缓存 swift3

标签 ios firebase caching swift3 firebase-realtime-database

我有个小问题。我从 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/

相关文章:

android - 如何禁用 Firebase 应用分发的电子邮件通知

android - 为什么 firebase push_token 返回黑名单?

java - Google Guava Cache - 在运行时更改驱逐超时值

java - 密码和用户名存储在 Apache Ignite 中的哪里?

ios - 使用 Array.filter 而不是对象获取索引列表

iphone - 从格式化程序返回的字符串中的错误日期!为什么?

ios - 有没有办法阻止用户在从 Firebase 发送后接收推送通知?

c# - 单点触控 : Localization from a Common Project

iphone - 如何在iOS上从DICOM文件提取像素数据?

c# - 如何在 ASP.net Core 中进行 Per-Request 缓存