SwiftUI, Fatal error: Unexpectedly found nil while unwrapping an Optional value

SwiftUI, Fatal error: Unexpectedly found nil while unwrapping an Optional value

func loadImageFromUrl() {

        guard let urlString = self.urlString else {
        return
    }

    let url = URL(string: urlString)!
        let task = URLSession.shared.dataTask(with: url, completionHandler: self.getImageFromResponse(data:response:error:))
        task.resume()
}

对于 let url = URL(string: urlString)!,我一直收到这个致命错误(在标题中提到),即使我在前几行中试图保护它。此外,当我将光标移到 urlString 上时,它确实显示了 API.

中我想要的 url 的突出显示

url 仍然可以是 nil,如果 urlString 不代表有效的 URL。你没有对此有所防范;你只防止 urlString 不是 nil.

您需要防范两种可能的结果:

func loadImageFromUrl() {

   guard let url = URL(string: self.urlString) else {
      print("Invalid url string: \(self.urlString)")
      return
   }

   let task = URLSession.shared.dataTask(with: url, ....

   // rest of your code
}

当然,这并不能解决 urlString 确实损坏的根本问题。你需要看看那里发生了什么。

由于您在视觉上看到它是正确的,因此它可能在开头或结尾包含一些空格。如果不是你控制的urlString,你可以trim它:

let trimmedUrlStr = self.urlString.trimmingCharacters(in: .whitespacesAndNewlines)

这应该有效

if let url = URL(string: urlString) {
    let task = URLSession.shared.dataTask(with: url, 
       completionHandler: self.getImageFromResponse(data:response:error:))
    task.resume()
}