首页 > 解决方案 > 在 Swift WKWebview 中获取设备名称

问题描述

如何在 swift5 中获取设备名称并使用 wkwebview url 发送。如果我打印名称,我会得到模型名称,但使用以下代码会得到错误 Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value。

 let name = UIDevice.current.name
 let url = URL(string: "mydomain/index.php?token=\(token ?? "")&model=\(name)")!
 webView.load(URLRequest(url: url))

我需要将设备名称和令牌存储在 mysql 数据库中。谢谢你!

标签: iosgetswift5uidevice

解决方案


您尝试解开(!第二行末尾的运算符)不安全的表达式。URL 构造函数无法将您作为 string: 参数传递的字符串识别为有效 url。它返回 nil 并导致致命错误。尝试重构您的代码以使其更安全:

let urlStr = "mydomain/index.php?token=\(token ?? "")&model=\(name)"
print("trying to load url \(urlStr)")
if let url = URL(string: urlStr) {
   webView.load(URLRequest(url: url))
}

更新:在这个SO 问题之后,必须稍微重构代码:

let urlStr = "mydomain/index.php?token=\(token ?? "")&model=\(name)"
print("trying to load url \(urlStr)")
if let url = URL(string: urlStr.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)) {
   webView.load(URLRequest(url: url))
}

推荐阅读