【问题标题】:Why does my Xcode Swift app crash when I make a call to webView.load when I use a Development build?为什么我在使用开发构建时调用 webView.load 时 Xcode Swift 应用程序崩溃?
【发布时间】:2020-05-22 04:40:24
【问题描述】:

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

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

当我在模拟器上调试时,这个实现效果很好。但是,如果我进行“开发”构建并将其推送给用户,那么一旦切换到此视图控制器,它就会崩溃。

在寻找解决方案时,我发现这可能是由于数据检测器造成的。所以我把它们都取消了,但这并没有改变结果。

还有人有其他建议吗?

【问题讨论】:

  • 如果使用自己的真机,有没有报错信息?
  • 如果没有错误,就不可能查明出了什么问题,因为您的代码没有显示任何异常。

标签: ios swift xcode webkit


【解决方案1】:

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

无法实例化名为 WKWebView 的类,因为没有类名为 找到 WKWebView;该类需要在源代码中定义或 从库中链接(确保类是正确的 目标)'

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

  1. 在项目导航器中,选择您的项目。
  2. 接下来,选择目标并选择 Build Phase 选项卡。

  1. 在 Link Binary with Libraries 部分下,单击 + 按钮。
  2. 键入“webkit”,然后添加 WebKit 框架。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-28
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      相关资源
      最近更新 更多