swift - 第一次从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)
}
}
}
}
完成此操作后,我不确定如何将数据保存在手机上。
解决方案
我建议您应该缓存图像而不是保存到本地磁盘,并记住设置内存/磁盘缓存限制年龄,保存设备内存的成本。有关更多信息,请参阅此库。 https://github.com/pinterest/PINCache 注意更多:仔细选择每个图像的缓存位置(内存或磁盘)。
推荐阅读
- vue.js - VueJS 动态添加表单组件
- html - 为什么我在 iFrame oEmbed 中的链接在 Wordpress 中不起作用?
- excel - VBA:在单元格值实际更改时运行“Worksheet_Change Function”,而不是在没有任何更改的情况下进入和退出编辑模式
- javascript - 模拟按键事件(纯js)
- linux - 如何修复(MAKEPKG)安装问题?
- ruby-on-rails - 更改 Rails 会话以使用 Capybara 进行测试
- django - 使用 Django Rest Framework 序列化相关枢轴模型
- java - 如何在控制器中获取http请求和查询字符串参数
- php - 如何使用 DataTable 和 Codeigniter 创建 ajax 请求以在同一文件中运行和返回
- r - R,在循环错误后继续使用参数组合