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

Swift 将字符串转换为URL(为什么结果变量为nil),swift,macos,cocoa,url,null,Swift,Macos,Cocoa,Url,Null,我正在尝试从字符串值创建URL变量。我不明白为什么结果URL为零 我已经建立了一个新的Xcode macOS项目,在视图上放置了一个简单的按钮,为该按钮创建了一个操作,并实现了以下代码。结果url为零 我在斯威夫特游乐场也尝试了同样的方法,结果奏效了 @iAction func按钮已单击(\uSender:Any){ 让urlAsString=”http://www.google.de/" 让url=url(字符串:urlAsString) 如果url!=nil{ //做工作。。。 } } u

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

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

我在斯威夫特游乐场也尝试了同样的方法,结果奏效了

@iAction func按钮已单击(\uSender:Any){
让urlAsString=”http://www.google.de/"
让url=url(字符串:urlAsString)
如果url!=nil{
//做工作。。。
}
}
urlAsString为“”但 url为零


您在调试器中发现了一个bug

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

复制它很容易:

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

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

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

<强>编辑该bug与SWIFT基础覆盖有一定关系。如果将

url
的声明更改为:

let url = NSURL(string: urlAsString)
…然后一切按预期进行


另请参见

@Sh_Khan不适合我。查看我编辑的帖子。我附上了一个来自debuggerChange“do work”注释的屏幕截图,以打印语句
print(“它工作了”)
。运行应用程序,无断点。它会打印吗?@matt是的,它会打印“它工作了”。似乎只显示了错误的变量内容?好的,太好了!因此,要么(1)您错误地使用了调试器,要么(2)调试器有一个bug-它显示为
nil
,但不是nil。和(2)是完全可能的!所以不管怎样,你都没有什么可担心的;你的代码运行良好。问题只是调试器显示
url
的值。别担心,开心点。谢谢你的详细解释。作为一个敏捷的新手,我从来没有想过在Xcode中找到bug:-)“别担心?”。此错误极有可能导致大量错误和浪费数小时的时间:/。感谢@matt展示了如何轻松复制它,这样我就可以提交另一个bug报告。我刚刚开始学习Swift,非常困惑,花了2个小时才找到这个答案:(老兄!!!!!我盯着屏幕看了4个小时,戳出了一些实际有效的代码,在URL NSURL之间切换,都是因为这个调试器错误,谢谢@matt的帖子:)