【发布时间】:2017-02-14 21:27:52
【问题描述】:
当我在 Swift 中的字典上使用 print() 时,它在控制台中显示得非常漂亮,带有一个键和一个值。
object = Optional({
customerId = 111;
transactionId = 333;
extraId = 444;
})
当我在同一个字典上运行po 时,它会吐出这个非常难以阅读的废话转储。
▿ Optional<Any>
▿ some : 3 elements
▿ 0 : 2 elements
▿ .0 : transactionId
- .1 : 333
▿ 1 : 2 elements
▿ .0 : customerId
- .1 : 111
▿ 2 : 2 elements
▿ .0 : extraId
- .1 : 444
只使用p 更糟糕
(Any?) $R8 = some {
payload_data_0 = 0x0000000170e679c0 {
Swift._SwiftNativeNSDictionary = {}
_heapBufferBridged_DoNotUse = 0x0000000170e679d0 {}
nativeStorage = {
buffer = 0x00000001703e4300 {
Swift.ManagedBuffer = {}
}
initializedEntries = (values = 0x00000001703e4328, bitCount = 4)
keys = 0x00000001703e4330
values = 0x00000001703e4390
}
}
payload_data_1 = 0x0000000000000000
payload_data_2 = 0x0000000000000000
instance_type = 0x0000000105ffc3f8
}
我可以在控制台中做些什么来查看我的变量,以便我可以实际阅读它们而无需筛选所有这些废话?
PS - 在这种情况下,我正在打印一个恰好是字典的 Optional<Any> 对象,但它与非可选字典相同。
【问题讨论】:
-
p object!在调试器中打印什么? -
您应该查看 LLDB 数据格式化程序。我没有足够的能力让它工作,但这里是来自 WWDC 2014 的Advanced Swift Debugging in LLDB。数据格式化程序出现在 34 分钟左右。
-
this topic 的副本虽然我提供了一个新的解决方案 below