致命错误:在展开可选值 SwiftUI AnimatedImage 时意外发现 nil

问题描述

我正在使用 SDWebImage 显示 Firestore 数据库中的图像,但当前出现错误

致命错误:在展开可选值时意外发现 nil。

不太确定如何进行 if 检查以防止强制解包,因此如果有人可以向我展示替代语法示例,我们将不胜感激。

@Observedobject var movies = getMoviesData()

...

ForEach(self.movies.datas) { item in
        vstack {
             Button(action: {}) {
                 AnimatedImage(url: URL(string: item.img)!)
                  .resizable()
                  .frame(height: 425)
                  .padding(.bottom,15)
                  .cornerRadius(5)                           
              }
         }
}

还尝试与 nil 进行比较(如文章中的建议:What does "Fatal error: Unexpectedly found nil while unwrapping an Optional value" mean?),但不起作用。

enter image description here

解决方法

问题在于您将 未包装 值与 nil 进行比较。您的程序甚至在比较之前就崩溃了。

您需要比较一个可选值:

if (URL(string: item.img) != nil) { ... }

最好使用 if-let 来确保 url 不是 nil

Button(action: {}) {
    if let url = URL(string: item.img) {
        AnimatedImage(url: url)
            .resizable()
            .frame(height: 425)
            .padding(.bottom,15)
            .cornerRadius(5)
    }
}