展开的 URLRequest 始终为零

Unwrapped URLRequest is always nil

我正在尝试检测对 WKWebView 中链接的点击,并在另一个 WKWebView 中加载相应的 URLs。 我能够获得点击的 URL 并创建 URL 请求,但加载 URL 请求总是失败并出现相同的错误:

Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value.

这很奇怪,因为当我打印 URLRequest 变量的值时,我可以看到它根本不是 nil。

let navigationController = self.navigationController
self.navigationController?.setToolbarHidden(false, animated: false)
let autoLinkUrl = (messageBody!["autoLinkUrl"] as? String)!
print(autoLinkUrl) /* prints: https://news.ycombinator.com/ */
            
if let requestURL = URL(string: autoLinkUrl) {
  print(requestURL) /* prints: https://news.ycombinator.com/ */
  let request : URLRequest? = URLRequest(url: requestURL)
  print(request) /* prints: Optional(https://news.ycombinator.com/) */
  self.websiteRecordingVC!.webView.load(request!) /* Fatal error is raised here */
  navigationController!.pushViewController(self.websiteRecordingVC!, animated: true)
}

欢迎任何帮助。 非常感谢。

在您的代码中,您 force-unwrapping (!) 每隔 optional 不必要 不推荐。 Over-using force-unwrapping 不是一个好的编码习惯。这可能会导致您的应用程序意外崩溃。

您必须使用可选绑定 (if-let) 和可选链接 来优雅地处理optionals

if let requestURL = URL(string: autoLinkUrl) {
    let request = URLRequest(url: requestURL)
    if let vc = self.websiteRecordingVC {
        vc.webView.load(request)
        navigationController?.pushViewController(vc, animated: true)
    }
}

此外,在您的 websiteRecordingVC 中检查是否所有 IBOutlets 都已正确连接。