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,你可以修剪它。
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()
}