Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 在调试器中查看Swift可选值_Debugging_Swift - Fatal编程技术网

Debugging 在调试器中查看Swift可选值

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

为了让我在编写和调试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("\(lines)")
断开
println…
行,调试器的变量视图将
Some
显示为
行的值。在我的理解中,这表示
是可选类型,并且包含一个包装在
部分
中的值,而不是

知道了这一点,我如何使用调试器来检查该值实际上是什么?我试过:

  • 单击小的“i”按钮,在调试器控制台中生成输出“Some”
  • 输入
    采购订单行
    采购订单行,这将生成
    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个值。