【问题标题】:How do I list (po) the contents of a Swift Array?如何列出 (po) Swift 数组的内容?
【发布时间】:2014-08-05 15:29:45
【问题描述】:

环境:Swift、Xcode 6

如何获取 Swift 数组的数据项列表 (po)?

以下是构建简单数组的 Swift 代码:

kindArray += "Two"
kindArray.append("Two")

var myStringArray: String[]
myStringArray = ["One", "Two"]
myStringArray.append("Three")
myStringArray += "Four"

var firstItem = myStringArray[0]

这是调试输出:

(lldb) po firstItem
"One"

(lldb) po kindArray
Some
 {
  Some = 0x0ffb0000 {}
}
(lldb) po myStringArray
size=1
 {
  [0] = {
    core = {
      _baseAddress = Builtin.RawPointer = 0x00000008
      _countAndFlags = 34718
      _owner = Some {
        Some = (instance_type = Builtin.RawPointer = 0x80000003)
      }
    }
  }
}

我得到的只是“一些”和“大小”。
我想显示内容。

【问题讨论】:

  • 我认为expr 应该更适合将 Swift 类型转储到调试器控制台。 (但我是从我的 iPhone 上发布的,那里没有 LLDB 可玩。)另外请注意,您可以在调试器中键入 repl 以获得一个交互式 Swift 环境,就像一个游乐场,与您的调试会话的当前状态.
  • 我认为他们可能还没有实现在 Xcode 中进行数组和字典调试所需的映射。
  • 在这两种情况下(repo 和 expr)我得到相同的 'po' 结果。所以我怀疑这个功能没有完全实现,

标签: debugging swift xcode6


【解决方案1】:

您应该能够利用PrintableDebugPrintable 协议。只需打印出descriptiondebugDescription 属性:

po myStringArray.description
po myStringArray.debugDescription

【讨论】:

  • 对我不起作用:myStringArray: [(Square, 25), (Square, 16),...] ------> (lldb) po myStringArray.description 错误:执行被中断,原因:EXC_BAD_ACCESS (code=1, address=0x4d03ee60)。进程已经回到表达式求值前的状态--------> (lldb) po myStringArray size=1 { [0] = (0 = Swift.String @ 0x7fbd0e3d6f70, 1 = 0) } --- ---> (lldb) po myStringArray.debugDescription 错误::1:1: error: 'Optional>' 没有名为 'debugDescription' myStringArray.debugDescription 的成员 ^ ~ ~~~~~~~~~~~~~~~~~~
  • 您是否正在运行上面示例中的代码?看起来您正在数组中存储其他内容。我运行了你的代码,我的 po 语句运行良好。
  • 我可以做一个 println();但不是通过调试器的po。也许调试器没有正确设置? ...我正在使用标准调试器默认值。
  • 我试图访问数组的第一个元素: let RicTuple = myStringArray[0];但出现以下错误:“'(String, Int)[]?'没有名为“下标”的成员”
  • @FrederickC.Lee 我认为您正在以某种方式将不良数据输入您的阵列。它也可能是编译器中的一个错误,但我能够很好地打印出字符串数组(包括您问题中的代码)
【解决方案2】:

只要做:

po print(myStringArray)

【讨论】:

  • 它不适用于像po print(self.currentOrder)这样的全局变量
  • 你是完美的!拯救了我的一天
【解决方案3】:
po myStringArray.map{ $0 }

如果您有一组自定义对象

po myArray.map.{ $0.customProperty }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2021-05-04
    • 2019-05-16
    • 1970-01-01
    相关资源
    最近更新 更多