【问题标题】:Why does web view crashes为什么网页视图会崩溃
【发布时间】:2018-08-28 04:49:47
【问题描述】:

我在 WKWebView 中调用一个网页,但是当我启动应用程序时它总是崩溃,并显示以下错误消息:

线程 1:致命错误:打开包装时意外发现 nil 可选值。

我的代码在下面

let param = "https://myapp.mydomain.com/GameAPI/index.jsp?user=0202020767|0202020767"
let url = URL(string: param)
webView.load(URLRequest(url: url!))

此时 nil 指向这段代码:

webView.load(URLRequest(url: url!))

【问题讨论】:

标签: ios swift wkwebview


【解决方案1】:

我怀疑参数中的“|”字符弄乱了您的网址。

尝试这样做:

let param = "user=0202020767|0202020767"
let escapedParam = param.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let fullURLString = "https://myapp.mydomain.com/GameAPI/index.jsp?\(escapedParam)"
if let url = URL(string: fullURLString) {
    webView.load(URLRequest(url: url))
} else {
    Swift.print("url is nil for some reason")
}

【讨论】:

  • 它不再崩溃,但 web 视图始终为空白。我试图打印 url,我有这样的东西 https%3A%2F%2Fmyapp.mydomain.com%2FGameAPI%2Findex.jsp%3Fuser=0202020767%7C0202020767
  • 我修改了我的代码,只转义了参数。让我们看看会发生什么!
  • 您的解决方案有效,但我必须强制解开转义参数。谢谢!!!
【解决方案2】:

发生这种情况是因为无法解析您尝试访问的网址。

此外,您最好使用可选绑定而不是强制展开。

这里是您可以使用有效 url 检查的代码:

if let url = URL(string: "your url") {
   webView.load(URLRequest(url: url))

} else {
   print("could not open url, it is nil")
}

【讨论】:

    猜你喜欢
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多