ios - 在 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 数据库中。谢谢你!
解决方案
您尝试解开(!第二行末尾的运算符)不安全的表达式。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))
}
推荐阅读
- regex - 如何匹配最早和最晚的开始时间并将它们连同相应的详细信息一起打印出来?
- multithreading - Application.Run(new Form1()) 停止执行进一步的代码
- javascript - 为我的家庭作业设计 Javascript Hangman 猜谜游戏,但无法让代码工作
- ios - 注释是否会从可执行的 Objective-C 中删除
- javascript - react如何使用react-router在app.js中渲染多个页面?
- python - 如何使用 Python 在 SQLServer2017 中插入多行
- excel - 仅当有一个时才删除中间首字母
- vue.js - 为什么没有添加路由 $router.addRoutes?
- node.js - 如何解决“不正常超时!” 在测试 fastify 路线时?
- angular - Angular 环境变量停止工作 - Heroku 应用程序