【问题标题】:Swift: How to view the values of variables displayed in Xcode's watch window?Swift:如何查看 Xcode 监视窗口中显示的变量值?
【发布时间】:2014-06-10 23:03:34
【问题描述】:

简单的问题 - 使用 Swift 时如何在 Xcode 的监视窗口中查看变量的值?

这是一个例子,看看 mdn 的值是 2067134273 ,但它无法在监视窗口中查看(ObjectiveC.NSObject 不会扩展为任何内容)。

我认为这可能是因为它是一个可选的,但它并不是那么简单,因为查看显示为“可选 NSString”的 onss 的显示,它可以查看它并且它是一个 NSString?,而nss 是一个非可选的 NSString 没有显示它的值。

这是他们的声明:

var nss:NSString = "NSString"
var ss = "Swift string"
var onss:NSString? = "Optional NSString"

那么在Xcode调试的时候如何查看mdn和nss的值,最好不用控制台自动显示呢?

【问题讨论】:

  • 试试expr -l objc -- mdn
  • 控制台不喜欢这样,它说 mdn 是一个未声明的标识符(虽然 po mdn 可以,但不显示它的内容)。无论如何,Swift 向前迈进了一步,但必须输入才能显示其值是 IMO 的倒退。
  • 我说这是 lldb 中的一个错误,打印 NSString 并不明智。也可以试试expr -l objc -- (id)(0x POINTER_VALUE)
  • "expr -l objc -- (id) (0x00000001702261c0)"(其中 0x00000001702261c0 是监视窗口中显示的 mdn 的值)显示“(id) $0 = 0x00000001702261c0”。 "expr -l objc -- (id)(0x mdn)" 表示后缀 x 无效。
  • 想一想if mdn!.lenght >= 10 { ... }这一行,如果mdn无法解包,这将导致直接崩溃。

标签: xcode swift


【解决方案1】:

Xcode 6 beta 4 显示 NSStringNSString? 类型的变量值:

但是,如果您可能需要查看某些其他类型的详细信息,即使是某些您无法更改的第三方框架,那么您可以实现 debugQuickLookObject 方法并返回自定义描述。如果是第三方库,您应该将其包装在扩展中。对于NSString,它将是:

extension NSString {
    func debugQuickLookObject() -> AnyObject {
        return self
        // return "Here is debug value: \(self)"
    }
}

要预览它,只需在监视窗口中选择项目并点击spacebar

【讨论】:

  • 应用名为 LICEcap。它是免费的,你可以在cockos.com/licecap下载它
  • 这是一个很好的答案。糟糕的是,Visual Studio for .net 应用程序中没有运行时调试工具 intermediate window。这将使生活轻松 10 倍。
猜你喜欢
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2010-09-16
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
相关资源
最近更新 更多