在 Swift WKWebview 中获取设备名称



如何在 swift5 中获取设备名称并将其与 wkwebview url 一起发送。如果我打印名称,我会得到模型名称,但使用以下代码,我收到错误线程 1:致命错误:解开可选值时意外发现 nil。

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

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

您尝试解开包装(第 2 行末尾的 ! 运算符(不安全的表达式。URL 构造函数无法将您传递为字符串的字符串识别为有效 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))
}

最新更新