NSDictionary *dictionary = @{@"A" : @"alfa",
@"B" : @"bravo",
@"C" : @"charlie",
@"D" : @"delta",
@"E" : @"echo",
@"F" : @"foxtrot"};
NSLog(@"%@", dictionary.description);
在控制台上打印出以下内容:
{
A = alfa;
B = bravo;
C = charlie;
D = delta;
E = echo;
F = foxtrot;
}
let dictionary: [String : String] = ["A" : "alfa",
"B" : "bravo",
"C" : "charlie",
"D" : "delta",
"E" : "echo",
"F" : "foxtrot"];
print(dictionary)
在控制台上打印出以下内容:
["B": "bravo", "A": "alfa", "F": "foxtrot", "C": "charlie", "D": "delta", "E": "echo"]
有没有办法在Swift中将它带到漂亮的打印字典,其中每个键值对占用一个新行?
11 回答
例如,如果目标是检查字典,则可以使用dump .
dump
是Swift标准库的一部分 .用法:
输出:
dump
通过反射(镜像)打印对象的内容 .阵列的详细视图:
打印:
对于字典:
打印:
dump
声明为dump(_:name:indent:maxDepth:maxItems:)
.第一个参数没有标签 .
还有其他可用参数,例如
name
为被检查对象设置标签:打印:
您还可以选择仅使用
maxItems:
打印一定数量的项目,使用maxDepth:
将对象解析到一定深度,并使用indent:
更改打印对象的缩进 .SWIFT 3
将字典转换为'AnyObject'对我来说是最简单的解决方案:
这比转储选项更容易阅读,但请注意,它不会为您提供键值的总数 .
po solution
对于那些想要在 console 中看到带有转义序列的字典为JSON的人,这里有一个简单的方法
(lldb)
p print(String(data: try! JSONSerialization.data(withJSONObject: object, options: .prettyPrinted), encoding: .utf8 )!)
使用功能编程的另一种方式
产量
出于调试目的,我只将数组或字典转换为漂亮的json:
然后:
控制台上的结果:
我不会考虑这里提供的很多答案真正相当印刷的JSON,因为当您将结果传递给JSON验证器时,结果无效(通常由于代码包括'='而不是':') .
我发现这样做的最简单方法是使用漂亮的打印写入选项将JSON对象转换为数据,然后使用结果数据打印字符串 .
这是一个例子:
结果:
EDIT :有人指出OP没有要求JSON,但我发现建议只是打印或将数据转储到控制台的答案提供的格式很少(如果有的话),因此不是很好的打印 .
我相信尽管OP没有要求JSON,但它是一个可行的答案,因为它是一种更可读的数据格式,而不是由xcode / swift吐出到控制台中的可怕格式 .
您可以只使用for循环并打印每次迭代
申请延期:
替代申请:
用法:
输出(在Xcode 8 beta 2 Playground中测试):
对于 Swift 3 (并 Build 在 @Jalakoo 的精彩答案之上),请进行以下
Dictionary
扩展:然后使用以下方法以 pretty 方式(优于
dump()
)打印 any hierarchy 的字典:将Swift Dictionary转换为json和back的方法是最好的 . 我通常使用Facebook的chisel,它有一个pjson命令来打印Swift字典 . 例如:
这应该打印字典 . 这是一种更清洁的方式来做已经建议的事情 . 附:目前,您必须将dict转换为NSDictionary,因为Objective-C运行时不理解Swift词典 . 我已经用凿子提出了PR来摆脱这种限制 .
怎么样: