将字符串转换为 URL(为什么结果变量为零)

Joh*_*ohn 12 url macos null cocoa swift

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

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

我在 Swift 操场上尝试了同样的方法,结果奏效了……

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

        if url != nil {
            // Do work...
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

调试器

mat*_*att 27

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

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

很容易重现它:

在此处输入图片说明

我们在条件的断点处暂停。所以,很显然url没有 nil,否则我们就不会在这里的。

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

在此处输入图片说明

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

编辑该错误与 Swift Foundation 覆盖层有关。如果您将声明更改为url

let url = NSURL(string: urlAsString)
Run Code Online (Sandbox Code Playgroud)

...然后一切都按预期进行。

另见/sf/answers/4070961471/