一尘不染

有没有一种方法可以将Swift字典漂亮地打印到控制台上?

swift

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中,有没有一种方法可以将其带到漂亮的打印字典中,其中每个键值对都占一行?


阅读 925

收藏
2020-07-07

共1个答案

一尘不染

例如,如果目标是检查字典,则可以使用dumpdump是Swift标准库的一部分。

用法:

let dictionary: [String : String] = ["A" : "alfa",
                                     "B" : "bravo",
                                     "C" : "charlie",
                                     "D" : "delta",
                                     "E" : "echo",
                                     "F" : "foxtrot"]

dump(dictionary)

输出:

在此处输入图片说明


dump 通过反射(镜像)打印对象的内容。

数组的详细视图:

let names = ["Joe", "Jane", "Jim", "Joyce"]
dump(names)

印刷品:

▿4个元素
-[0]:乔
-[1]:简
-[2]:吉姆
-[3]:乔伊斯

对于字典:

let attributes = ["foo": 10, "bar": 33, "baz": 42]
dump(attributes)

印刷品:

▿3个键/值对
▿[0]:(2个元素)
-. 0 :bar
-.1:
33▿[1]:(2个元素)
-.0:baz
-.1:
42▿[2]:( 2个元素)
-.0:foo
-.1:10

dump声明为dump(_:name:indent:maxDepth:maxItems:)

第一个参数没有标签。

还有其他可用参数,例如name为要检查的对象设置标签:

dump(attributes, name: "mirroring")

印刷品:

▿镜像:3个键/值对
▿[0] :( 2个元素)
-. 0 :bar
-.1:
33▿[1] :( 2个元素)
-.0:baz
-.1:
42▿[2] :(2个元素)
-.0:foo
-.1:10

您也可以选择仅使用来打印一定数量的项目maxItems:,使用来解析对象到一定深度maxDepth:,并使用来更改打印对象的缩进indent:

2020-07-07