这个问题在这里已有答案:
试图在Swift 3中创建一个webview控制器。在viewDidLoad()函数的最后一行,我收到错误Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
。
据我所知,只有在未设置某些内容但设置了webView,loadRequest存在且请求变量存在的情况下才会发生此错误。我没有正确包装东西吗?或者在某处改变了语法?
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL (string: "https://example.com");
let request = URLRequest(url: url!);
webView.loadRequest(request);
}
我还没有找到任何可以解释究竟发生了什么的东西。我试着尽可能地记录下来。
这似乎与包装问题无关。
您应该安全地解包,然后使用调试器逐步执行代码以将变量设置为nil。
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
guard let url = URL(string: "https://example.com") else {
return
}
let request = URLRequest(url: url)
webView?.loadRequest(request)
}
UIWebView
已被弃用,所以你应该在某些时候使用WKWebView
。
第一件事是第一件事:
1)除非你在同一行上放置多个命令,否则Swift中不需要分号。
2)检查您与IBOutlet
的连接。我怀疑你的问题住在这里。在Xcode中,您可以在这里查看它们。最简单的方法是断开连接并重新连接它们。
3)远离力量展开选项。相反,使用guard
语句,如下所示:
guard let url = URL(string: "https://www.youtube.com/watch?v=dQw4w9WgXcQ") else { return }
// now the optional URL is unwrapped without risking a crash.
let request = URLRequest(url: url)
webView.loadRequest(request)
这是repo I threw up的链接。