Xcode 打印字典的键和值

Xcode print keys and values of Dictionary

Xcode7 中的打印说明给出了类似于以下内容的内存地址。尝试了所有选项,但得到这样的输出。

▿ 3 elements
  ▿ [0] : 2 elements
    - .0 : Output
    ▿ .1 : 3 elements
      ▿ [0] : 2 elements
        - .0 : type
        - .1 : Output2 { ... }
      ▿ [1] : 2 elements
        - .0 : version
        - .1 : 1.0
      ▿ [2] : 2 elements
        - .0 : content
        ▿ .1 : 2 elements

我怎样才能打印字典的准确值?

我创建了这个测试词典:

let dict:Dictionary = ["key1": "value1", "key2": 42, "keyForColor": UIColor.redColor()]

然后我用po dict得到了你描述的结果:

po dict
▿ 3 elements
  ▿ [0] : 2 elements
    - .0 : "key1"
    - .1 : value1
  ▿ [1] : 2 elements
    - .0 : "keyForColor"
  ▿ [2] : 2 elements
    - .0 : "key2"

当您使用 po dict.description 时,您会得到:

po dict.description
"[\"key1\": value1, \"keyForColor\": UIDeviceRGBColorSpace 1 0 0 1, \"key2\": 42]"

作为对@user3441734 的跟进,您可以使用 p 而不是 po 来简单地获取最后一部分:

(lldb) p dict
([String : NSObject]) $R1 = 3 key/value pairs {
  [0] = (key = "key1", value = "value1")
  [1] = (key = "keyForColor", value = 0x00007f9c42d3aab0)
  [2] = (key = "key2", value = Int64(42))
}

如果这不符合您的需要,您可以随时编写 Dictionary 的扩展并构建自定义描述,内容如下:

extension Dictionary {

  var fancyDescription: String {
      var description = ""
      for (key, value) in self {
          description += "\(key) : \(value), "
      }  
      return "{ \(description) }"
  }
}

并与po dict.fancyDescription

一起使用

试试 CFShow:

Prints a description of a Core Foundation object to stderr.

 po CFShow(dict)
<command-name>'.
(lldb) repl dump(dict)
▿ 3 key/value pairs
  ▿ [0]: (2 elements)
    - .0: key1
    ▿ .1: Swift._NSContiguousString #0
      ▿ super: Swift._SwiftNativeNSString
        ▿ super: value1
          ▿ NSString: value1
            - NSObject: value1
      ▿ _core: Swift._StringCore
        ▿ _baseAddress: Swift.COpaquePointer
          - _rawValue: (Opaque Value)
        - _countAndFlags: 6
        - _owner: nil
  ▿ [1]: (2 elements)
    - .0: keyForColor
    ▿ .1: UIDeviceRGBColorSpace 1 0 0 1 #1
      ▿ UIDeviceRGBColor: UIDeviceRGBColorSpace 1 0 0 1
        ▿ UIColor: UIDeviceRGBColorSpace 1 0 0 1
          - NSObject: UIDeviceRGBColorSpace 1 0 0 1
  ▿ [2]: (2 elements)
    - .0: key2
    ▿ .1: 42 #2
      ▿ NSNumber: 42
        ▿ NSValue: 42
          - NSObject: 42
([String : NSObject]) $R1 = 3 key/value pairs {
  [0] = (key = "key1", value = "value1")
  [1] = (key = "keyForColor", value = 0x00007f9c42d3aab0)
  [2] = (key = "key2", value = Int64(42))
}