将 String 转换为 URL(为什么结果变量为 nil)

Convert String to URL (Why is resulting variable nil)

我正在尝试从字符串值创建一个 URL 变量。我不明白为什么结果 URL 是 nil

我已经建立了一个新的 Xcode macOS 项目,在视图上放置了一个简单的按钮,为该按钮创建了一个动作并实现了以下代码。结果 url 为零。

我在 Swift playground 上尝试了同样的方法并且成功了...

    @IBAction func buttonClicked(_ sender: Any) {
        let urlAsString = "http://www.google.de/"
        let url = URL(string: urlAsString)

        if url != nil {
            // Do work...
        }
    }

urlAsString 是“http://www.google.de/”但是 url 为零

debugger

您在调试器中发现了一个错误!

[此错误预计将在 Xcode 12.5 中修复。]

重现它很容易:

我们已在条件内部 的断点处暂停。所以很明显 url 不是 不是 nil 否则我们根本不会在这里。

证明这一点的另一种方法是在控制台中 po url(参见此屏幕截图的右下角):

然而,url 在工具提示和变量列表中都显示为 nil。所以调试器只是在骗你:url 不是零。别担心,要开心。您的代码运行良好。

EDIT 该错误与 Swift Foundation 叠加层有关。如果将 url 的声明更改为:

let url = NSURL(string: urlAsString)

...然后一切正常。

另见