Swift2 Xcode打印字典的键和值

Swift2 Xcode打印字典的键和值,swift2,xcode7,Swift2,Xcode7,Xcode 7中的打印描述给出了与下面类似的内存地址。尝试了所有选项,但得到了这样的输出 ▿ 3 elements ▿ [0] : 2 elements - .0 : Output ▿ .1 : 3 elements ▿ [0] : 2 elements - .0 : type - .1 : Output2 { ... } ▿ [1] : 2 elements - .0 : version

Xcode 7中的打印描述给出了与下面类似的内存地址。尝试了所有选项,但得到了这样的输出

▿ 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))
}
如果这不符合您的需要,您可以编写字典的扩展,并构建自定义描述,如下所示:

extension Dictionary {

  var fancyDescription: String {
      var description = ""
      for (key, value) in self {
          description += "\(key) : \(value), "
      }  
      return "{ \(description) }"
  }
}
并将其与po dict.fancyDescription一起使用

打印一个核心基础对象到STDRR.< /P>的描述

”。
(lldb)复制转储(dict)
▿ 3个键/值对
▿ [0]:(2个元素)
-.0:key1
▿ .1:Swift.\n连续字符串#0
▿ 超级:Swift.\u SwiftNativeNSString
▿ 超级:价值1
▿ NSString:value1
-NSObject:value1
▿ _核心:Swift.\u StringCore
▿ _基本地址:Swift.COpaquePointer
-_rawValue:(不透明值)
-_countAndFlags:6
-业主:无
▿ [1] :(2个要素)
-.0:keyForColor
▿ .1:UIDeviceRbColorSpace 1 0 0 1#1
▿ UIDeviceRGBColor:UIDeviceRGBColorSpace 1 0 0 1
▿ UIColor:UIDeviceRbColorSpace 1 0 1
-NSObject:UIDeviceGBColorSpace 1 0 1
▿ [2] :(2个要素)
-.0:key2
▿ .1: 42 #2
▿ 编号:42
▿ 数值:42
-对象:42
([String:NSObject])$R1=3个键/值对{
[0]=(key=“key1”,value=“value1”)
[1] =(key=“keyForColor”,值=0x00007f9c42d3aab0)
[2] =(key=“key2”,value=Int64(42))
}

与在Xcode 6中打印字典相比,这是不可读的。即使使用
po dict.description
。没有解决办法吗?@user1463853我没有Xcode6。您需要什么样的“可接受”打印输出?。缺少哪些信息?@user1463853只需使用repl dump(dict)就可以更好地探索相同的dict
 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))
}