2015-10-04 95 views
3

xcode 7中的打印描述给出的内存地址与下面类似。尝试了所有的选择,但得到这样的输出。请让我知道如何打印字典的确切值。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 

不知道为什么苹果是100%的控制台窗口集中..还有就是在Xcode 5变为6,6至6.2,6.2至6.4,现在6.4〜7 ..我认为苹果应该着眼于提高质量而不是控制台)

回答

2

我创造了这个测试词典:

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]" 
+0

相比在Xcode 6印刷字典,这个不可读。即使有'po dict.description'。有没有解决方法? – gpichler

+0

@ user1463853我没有Xcode6。 “可接受”打印出来需要什么?哪些信息缺失? – user3441734

+0

@ user1463853只是使用repl转储(字典)来更好地探索相同的字典 – user3441734

0

作为跟进@ 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

+0

检查我的答案 – user3441734

3

尝试用CFShow

打印核心基金会对象标准错误的描述。

po CFShow(dict) 
1
<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)) 
}