我试图在我的应用程序中打开一个网站,但是由于某种原因,一行一直返回nil,这是我的代码:

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时,您的程序崩溃并得到该错误。相反,您想使用“ guard 队让”或“如果让”语句安全地打开可选项。

guard let name = element.Name as? String else {
    print("something went wrong, element.Name can not be cast to String")
    return
}

if let url = URL(string: "http://en.wikipedia.org/wiki/\(name)") {
    UIApplication.shared.openURL(url)
} else {
    print("could not open url, it was nil")
}

如果这样做不能解决问题,则可能是element.Name存在问题。因此,如果您仍有问题,我将检查是否接下来是可选步骤。

更新

我添加了一种可能的方法来检查element.Name属性,以查看是否可以将其强制转换为String并创建要创建的所需url。您可以在我之前发布的代码上方看到该代码。

关于swift - swift 。网址返回nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40368389/

10-14 23:18