ter*_*dyl 6 debugging xcode swift
当我print()在Swift中使用字典时,它在控制台中显得漂亮而美观,带有键和值.
object = Optional({
customerId = 111;
transactionId = 333;
extraId = 444;
})
Run Code Online (Sandbox Code Playgroud)
当我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
Run Code Online (Sandbox Code Playgroud)
使用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
}
Run Code Online (Sandbox Code Playgroud)
我可以在控制台中以什么样的方式查看我的变量而不必筛选所有这些废话?
PS - 在这种情况下,我打印的Optional<Any>是恰好是字典的对象,但它与非可选字典相同.
Sta*_*ski 17
expression debugPrint(object)
Run Code Online (Sandbox Code Playgroud)
只需将上面的行放在调试器中,然后按Enter键.它将以更易读的格式打印出对象的内容.
你也可以使用另一个命令 - po print(data)这更容易记住.
agi*_*ult 13
?? 的(以前)接受的答案仅仅提供的字典作为非格式化的单一行字符串像这样:
Optional(["transactionId": 333, "customerId": 111, "extraId": 444])
Run Code Online (Sandbox Code Playgroud)
?? 一旦你获得更多的键和嵌入的对象/字典,它就会变得难以阅读。
pjson通过在 lldb 终端(源)中运行此命令来定义别名(我命名为 mine ):command regex pjson 's/(.+)/expr print(NSString(string: String(data: try! JSONSerialization.data(withJSONObject: %1, options: .prettyPrinted), encoding: .utf8)!))/'
Run Code Online (Sandbox Code Playgroud)
~/.lldbinit:Optional(["transactionId": 333, "customerId": 111, "extraId": 444])
Run Code Online (Sandbox Code Playgroud)
pjson您可以在 Xcode 的 lldb 终端中使用的别名:pjson object
Run Code Online (Sandbox Code Playgroud)
command regex pjson 's/(.+)/expr print(NSString(string: String(data: try! JSONSerialization.data(withJSONObject: %1, options: .prettyPrinted), encoding: .utf8)!))/'
Run Code Online (Sandbox Code Playgroud)
? 输出po print(data)
Optional(["transactionId": 333, "embeddedDict": ["foo": true], "customerId": 111, "extraId": 444])
Run Code Online (Sandbox Code Playgroud)
? 输出pjson
{
"transactionId" : 333,
"embeddedDict" : {
"foo" : true
},
"customerId" : 111,
"extraId" : 444
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |