【发布时间】:2015-05-24 18:25:50
【问题描述】:
为了开始编写和调试 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”按钮,在调试器控制台中产生输出“Some”。
- 在调试器控制台中输入
po lines和po lines!,生成EXC_BAD_ACCESS。 更新:全新安装 Xcode 后,po lines似乎没有任何效果,即没有输出。
最后一行打印出Optional(["This is some text.", "Just for fun."]),这正是我希望调试器显示的内容。
我怎样才能得到lines的解包字符串数组值,以及可选变量lines(调试器未显示其解包值)与可选变量text(其它显示的价值?每次我想调试一个可选值,或者使用 printf-debugging 时,我真的需要引入一个辅助变量吗?
【问题讨论】:
-
这对我来说在 Xcode 6.2 上工作得很好,无论是变量视图还是
po。这是针对 OS X 应用程序的?如果你设置了一个断点来访问调试器,你在哪一行中断? -
@gregheo 是的,这是一个 Cocoa 应用程序。断点在 println ... 行。
po在你的机器上显示什么? -
会不会是 Swift 的一些惰性求值功能?我刚刚尝试跳过 println 语句,突然 lines 的值显示为 lines = 2 values。