为什么在我使用开发构建时调用 webView.load 时我的 Xcode Swift 应用程序崩溃?

Why does my Xcode Swift app crash when I make a call to webView.load when I use a Development build?

我有一个带有简单视图控制器的应用程序,它只使用 WKWebView(导入 WebKit)加载网页。这是我使用的代码:

@IBOutlet weak var webView: WKWebView!
if let url = URL(string: webPageString) {
    webView.load(URLRequest(url: url))
}

当我在模拟器上调试时,这个实现效果很好。但是,如果我执行 'Development' 构建并推送给用户,那么它会在切换到此视图控制器后立即崩溃。

在寻找解决方案时,我发现这可能是数据检测器的问题。所以我取消选中所有这些,但这并没有改变结果。

还有其他建议吗?

崩溃后控制台中的消息是什么?

你在什么方法里面调用 webView.load(URLRequest(url: url)) ?

看起来你崩溃了,因为 webView == nil。您应该只调用 webView.load(URLRequest(url: url)) after/inside viewDidLoad() 方法已在该 UIViewController 中调用。这是因为所有 IBOutlet 视图不是在实例化 UIViewController 后立即连接,而是在 viewDidLoad() 调用后立即连接。

我终于能够在连接到调试器时重复这个问题。我收到以下错误消息:

Could not instantiate class named WKWebView because no class named WKWebView was found; the class needs to be defined in source code or linked in from a library (ensure the class is part of the correct target)’

要解决该错误,您需要做的就是将 WebKit 框架添加到您的 Xcode 项目中。这可以通过以下步骤完成:

  1. 在项目导航器中,select 您的项目。
  2. 接下来,select 目标并选择构建阶段选项卡。

  1. 在 Link 带库的二进制文件部分下,单击 + 按钮。
  2. 输入'webkit'然后添加WebKit框架