从 Fire Storage 检索图像,但是如果图像不存在,则应用程序崩溃

Posted

技术标签:

【中文标题】从 Fire Storage 检索图像,但是如果图像不存在,则应用程序崩溃【英文标题】:Retrieving image from Fire Storage however if the image does not exist the app crashes 【发布时间】:2021-11-08 05:07:13 【问题描述】:

您好,我最近想出了如何使用 UIImagePickerController 上传和图像到 Firebase 存储,以及如何在我的视图控制器上的 UIImageView 中显示该图像,但是问题是如果该文件在 Fire Storage 中不存在,那么应用程序在我有机会上传图片之前就崩溃了。我是新手,所以我希望有人对我的代码进行简单的修复,以了解我如何检索图像。我想从 Fire 中检索图像。存储,但如果该图像尚不存在,那么它不会使应用程序崩溃,而只是简单地查看它。这是我用来检索有效图像的代码,但前提是图像已经存在。感谢您的帮助!

我得到的错误是unwrapping Optional Value时意外发现Nil

//使用已登录的Firestore数据库-当前用户-从Firestorage检索上传的照片,并在名为profileimage.image的ViewController中将图像显示到UIImageView

func downloadimages() 
    let reference = Storage.storage().reference(withPath: "\("images/"+Auth.auth().currentUser!.uid+"+.jpg")")
    reference.downloadURL  (url, error) in
        let data = NSData(contentsOf: url!)
        let image = UIImage(data: data! as Data)
        self.profileimage.image = image
    

【问题讨论】:

【参考方案1】:

我也想出了解决这个问题的方法,并想发帖以防任何新的编码人员遇到同样的问题。我只需要添加

if error != nil 
  print(error!.localizedDescription)
  return

完整示例

func downloadimages() 
    let reference = Storage.storage().reference(withPath: "\("images/"+Auth.auth().currentUser!.uid+"+.jpg")")
    reference.downloadURL(url, error) in
        if error != nil 
            print(error!.localizedDescription)
            return
        
        let data = NSData(contentsOf: url!)
        let image = UIImage(data: data! as Data)
        self.profileimage.image = image
    

【讨论】:

以上是关于从 Fire Storage 检索图像,但是如果图像不存在,则应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用.net核心Web API和jquery从天蓝色斑点中上传和检索图像

firestore firebase storage 以较低的分辨率检索图像

从 Oracle DB 中检索图像

如何从 fire-base 检索数据到新活动中单击 RecyclerView

从 url 检索 jpg 图像返回 nil。但是,从 url 检索 png 图像工作正常

Fire Storage Exception([firebase_storage/unauthorized] 用户无权执行所需的操作。)(我的规则是允许读/写)