试着在编写和调试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
。
知道了,我如何使用调试器来检查实际值是什么?我试过了:
po lines
和po lines!
,产生EXC_BAD_ACCESS
。 更新:全新安装Xcode后,po lines
似乎无效,即无输出。最后一行打印Optional(["This is some text.", "Just for fun."])
,这正是我想要显示的调试器。
如何获取展开的字符串数组值lines
,以及可选变量lines
之间的差异,调试器未显示的未展开值和可选变量变量text
,它的值显示了什么?每次我想调试一个可选值,或者使用printf-debugging时,我是否真的需要引入一个辅助变量?
答案 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
}