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))
}
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))
}