Debugging 在调试器中查看Swift可选值
为了让我在编写和调试Swift代码时全身湿透,我写了以下内容。这是在OSX10.10.2和Xcode 6.2上实现的Debugging 在调试器中查看Swift可选值,debugging,swift,Debugging,Swift,为了让我在编写和调试Swift代码时全身湿透,我写了以下内容。这是在OSX10.10.2和Xcode 6.2上实现的 let text : String? = "This is some text.\nJust for fun." let lines : [String]? = text?.componentsSeparatedByCharactersInSet( NSCharacterSet.newlineCharacterSet()) println("\(lin
let text : String? = "This is some text.\nJust for fun."
let lines : [String]? =
text?.componentsSeparatedByCharactersInSet(
NSCharacterSet.newlineCharacterSet())
println("\(lines)")
断开println…
行,调试器的变量视图将Some
显示为行的值。在我的理解中,这表示行
是可选类型,并且包含一个包装在部分
中的值,而不是无
知道了这一点,我如何使用调试器来检查该值实际上是什么?我试过:
- 单击小的“i”按钮,在调试器控制台中生成输出“Some”李>
- 输入
采购订单行
和采购订单行调试器控制台中的code>,这将生成EXC\u BAD\u访问
更新:在新安装Xcode之后,po行
似乎没有效果,即没有输出
最后一行打印可选([“这是一些文本。”,“只是为了好玩。”])
,这正是我希望调试器显示的内容
如何获取行
的未包装字符串数组值,以及可选变量行
(调试器未显示其未包装值)与可选变量文本
之间的区别是什么?每次我想调试一个可选值,或者使用printf调试时,我真的需要引入一个辅助变量吗?也许我误解了,但是您将“行”作为可选值。因此,您需要在println语句中将其展开,或者不将其作为可选值。首先去掉“行”声明后面的“?”,看看这是否对您有效
let lines : [String] =
要打印可选值,请使用:
if let unwrappedLines = lines { // only executes if lines is not nil
println("\(unwrappedLines)") // prints the unwrapped variable
}
ComponentSeparatedByCharactersSet的结果是可选的。当然,我可以在事后将其展开,但我的问题是,我是否可以在调试器中获得已展开的值。println语句工作得很好。在Xcode 6.2上,无论是变量视图还是po
,这对我来说都很好。这是用于OSX应用程序的?如果您设置了一个断点来访问调试器,那么您将在哪一行中断?@gregheo是的,这是一个Cocoa应用程序。断点在println上。。。线po
在您的机器上显示了什么?可能是Swift的一些惰性评估功能吗?我刚试着跳过println语句,突然行的值显示为lines=2个值。