从firebase加载图像并缓存swift3

时间:2017-06-29 09:51:59

标签: 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
        })
    })
  }
}

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

1 个答案:

答案 0 :(得分: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)


    }
  }
}