我试图在我的应用程序中打开一个网站,但由于某种原因,一行不断返回零,以下是我的代码:
let url = URL(string: "http://en.wikipedia.org/wiki/\(element.Name)")!
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
}
第一行(let url = URL...
)不断返回此错误:
致命错误:在展开可选值时意外地找到nil。
我该怎么做才能解决这个问题?
8条答案
按热度按时间blmhpbnm1#
我想这会有帮助。您的element.name可能在单词之间包含空格,因此addingPercentEncoding将成为PercentEncoding字符串。
am46iovg2#
此修复的Swift 4版本:
kuhbmx9i3#
这对你来说绝对有效。这个问题是由于你的字符串URL之间的空格造成的。要解决这个问题,请使用
tzcvj98z4#
不要用(!)强制打开它。当你使用(!)并且变量的值为nil时,你的程序会崩溃,你会得到那个错误。相反,你想用一个“guard let”或者一个“if let”语句安全地打开可选的。
如果这还不能解决问题,那么您可能在element. Name方面遇到了问题。因此,如果您仍然遇到问题,我将检查一下这是否是可选的下一步。
更新
我添加了一种可能的方法来检查element.Name属性,看看是否可以将其转换为String,并创建想要创建的url。您可以在我之前发布的代码上面看到代码。
goqiplq25#
我猜在添加
element.Name
后,您的URL格式不正确,因此只需使用函数令人惊讶的是,URL构造函数没有考虑URL格式
xytpbqjk6#
它可能包含零宽度空格,顾名思义,它是一个Unicode字符,肉眼看不见
wfauudbj7#
这可能是一个编码问题。你试过吗
rxztt3cl8#
URLComponents是为了避免URL组件的手动转义(适用于每个不同的规则)