SwiftUI,致命错误:在展开可选值时意外发现nil
对于SwiftUI,致命错误:在展开可选值时意外发现nil,swiftui,optional,fatal-error,unwrap,Swiftui,Optional,Fatal Error,Unwrap,对于let url=url(string:urlString),即使我在前面几行中尝试过保护它。此外,当我将光标移动到urlString上时,它确实会从API中突出显示我的预期url。url如果urlString不代表有效url,则仍然可能是nil。你没有防备这一点;您只保护了urlString不被nil 您需要警惕这两种可能的结果: func loadImageFromUrl() { guard let urlString = self.urlString else {
let url=url(string:urlString)代码>,即使我在前面几行中尝试过保护它。此外,当我将光标移动到urlString
上时,它确实会从API中突出显示我的预期url。url
如果urlString
不代表有效url,则仍然可能是nil
。你没有防备这一点;您只保护了urlString
不被nil
您需要警惕这两种可能的结果:
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()
}
当然,这并不能解决urlString
确实被破坏的根本问题。你需要看看那里发生了什么
因为您可以从视觉上看到它是正确的,所以它的开头或结尾可能包含一些空格。如果您控制的不是URL字符串,则可以对其进行修剪:
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
}
这应该行得通
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()
}