我有以下代码:
print("CODE STRING SELECTED: \(codeString)")
let aURL = URL(string: codeString)!
if UIApplication.shared.canOpenURL(aURL) { UIApplication.shared.openURL(aURL) }
字符串
这段代码在一个Button里面,Xcode控制台正确地打印了codeString
,它不是nil
,所以它应该打开codeString
的URL,相反,Xcode抛出这个错误:
CODE STRING SELECTED: mailto:[email protected]?subject=Subject here&body=Lorem ipsum dolor sit, amet quatum.
Fatal error: Unexpectedly found nil while unwrapping an Optional value
2019-07-08 11:19:56.076467+0200 QRcode[2751:1043394] Fatal error: Unexpectedly found nil while unwrapping an Optional value
型
同样的事情发生在电话号码或短信字符串的情况下(我从扫描的QR码中获得codeString
值):
CODE STRING SELECTED: tel:+1 2345678901
Fatal error: Unexpectedly found nil while unwrapping an Optional value
CODE STRING SELECTED: SMSTO:+1012345678:lorem ipsum dolor sit, amet
Fatal error: Unexpectedly found nil while unwrapping an Optional value
型
在一个URL的情况下,如https//example.com,应用程序不会崩溃,没有零错误,同样的文本等,所以我真的不明白为什么我得到这个错误,即使codeString
不是nil
。
2条答案
按热度按时间50pmv0ei1#
字符串不是
nil
,但它不代表有效的URL。您必须对URL进行编码。但是,建议您安全地打开选项
字符串
2023年更新:
来自
URL(string:)
的文档**重要提示:**对于在iOS 17上或之后链接的应用以及一致的操作系统版本,URL解析已从过时的RFC 1738/1808解析更新为与URLComponents相同的RFC 3986解析。这统一了URL和URLComponents API的解析行为。现在,URL会自动对无效字符进行百分比和IDN编码,以帮助创建有效的URL。
txu3uszq2#
URL是
nil
,因为它不能在没有转义空格的情况下创建。这将工作:
字符串