2017-02-14 128 views
3

当我在Swift的字典中使用print()时,它在控制台中显示出漂亮而美丽的效果,并带有一个键和一个值。更漂亮的调试输出打印Xcode中的Swift Dictionary

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>碰巧是字典的对象,但它与非可选字典相同。

+0

在调试器中打印什么'p object!'? –

+1

你应该看看LLDB数据格式化程序。我没有这样做,但是这里是WWDC 2014的[高级Swift调试在LLDB](https://developer.apple.com/videos/play/wwdc2014/410/)。数据格式化程序是围绕着34分钟。 –

回答

8
expression debugPrint(object) 

只是把上面的行放在你的调试器中,然后回车。它将以更易读的格式打印出我们对象的内容。

也可以使用另一个命令 - po print(data),这更容易记住。

+0

您是否能够为这些命令创建别名,因此我不必在调试器中输入太多内容? – teradyl