首页 > 解决方案 > 第一次从firebase检索图像后在本地保存图像(swift 4.2)

问题描述

为了减少对 firebase 的调用量,我想在第一次从 firebase 检索图像后将其保存在手机上。目前我有它,以便图像在存储中,并且每次加载视图时都会调用它。

    func setImageToProfilePicture(){
    downloadImages(success: { (image) in
        print(image)
    }) { (error) in
        print(error.localizedDescription)
    }
}

func downloadImages(success:@escaping (_ image:UIImage)->(),failure:@escaping (_ error:Error)->()){
    // Create a reference with an initial file path and name
    guard let uid = Auth.auth().currentUser?.uid else { return }
    let reference = Storage.storage().reference(withPath: "user/\(uid)")

    reference.getData(maxSize: (1 * 1024 * 1024)) { (data, error) in
            if let _error = error{
                print(_error)
                failure(_error)
            } else {
                if let _data  = data {
                    let myImage:UIImage! = UIImage(data: _data)
                    self.profileImage.image = myImage
                    success(myImage)
                }
            }
        }
} 

完成此操作后,我不确定如何将数据保存在手机上。

标签: swiftxcodefirebase

解决方案


我建议您应该缓存图像而不是保存到本地磁盘,并记住设置内存/磁盘缓存限制年龄,保存设备内存的成本。有关更多信息,请参阅此库。 https://github.com/pinterest/PINCache 注意更多:仔细选择每个图像的缓存位置(内存或磁盘)。


推荐阅读