【问题标题】:Fatal error: Unexpectedly found nil while unwrapping an Optional value SwiftUI AnimatedImage致命错误:在展开可选值 SwiftUI AnimatedImage 时意外发现 nil
【发布时间】:2021-04-10 15:36:41
【问题描述】:

我正在使用 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?),但不起作用。

【问题讨论】:

  • @pawello2222 不完全是。它说“检查可选项是否包含值的最简单方法是将其与 nil 进行比较。”我正在尝试这样做,但它给出了相互矛盾的错误。我知道我需要检查以确保变量具有值,但如果您或其他任何人可以提供与我的代码有关的语法示例,我将不胜感激。

标签: swift foreach swiftui sdwebimage


【解决方案1】:

问题在于您将 unwrapped 值与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)
    }
}

【讨论】:

  • 完美。我只需要一个示例来了解如何实现它。非常感谢,先生!
猜你喜欢
  • 2020-09-19
  • 2021-06-26
  • 2016-01-26
  • 2016-02-29
  • 2016-01-08
相关资源
最近更新 更多