在调试器中查看Swift可选值

时间:2015-03-21 10:55:03

标签: debugging swift

试着在编写和调试Swift代码时弄湿我,我写了以下内容。这是在OS X 10.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作为lines的值。据我了解,这表明lines属于可选类型,并且包含Some中包含的值,而不是None

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

  • 点击小" i"按钮,产生输出"一些"在调试器控制台中。
  • 在调试器控制台中输入po linespo lines!,产生EXC_BAD_ACCESS更新:全新安装Xcode后,po lines似乎无效,即无输出。

最后一行打印Optional(["This is some text.", "Just for fun."]),这正是我想要显示的调试器。

如何获取展开的字符串数组值lines,以及可选变量lines之间的差异,调试器未显示的未展开值和可选变量变量text,它的值显示了什么?每次我想调试一个可选值,或者使用printf-debugging时,我是否真的需要引入一个辅助变量?

2 个答案:

答案 0 :(得分:0)

也许我是误会,但你做了" line"可选值。因此,您需要在println语句中解包它或不使其成为可选值。脱掉"?"在你的"行"之后首先声明,看看它是否适合你。

let lines : [String] =

答案 1 :(得分:0)

要打印可选值,请使用:

if let unwrappedLines = lines { // only executes if lines is not nil
    println("\(unwrappedLines)") // prints the unwrapped variable
}