当前位置: 首页 > 面试题库 >

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

微生俊材
2023-03-14
问题内容
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中,有没有一种方法可以将其带到漂亮的打印字典中,其中每个键值对都占一行?


问题答案:

例如,如果目标是检查字典,则可以使用dump。dump是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:



 类似资料:
  • 我在循环后连接了一个DB查询的结果列表,得到了预期的输出,但值之间没有任何分隔符: 有没有办法在值中添加一个换行分隔符以获得漂亮的打印效果?比如: 或 或

  • 问题内容: 我有一个类,我们称它为Cls,其中包含一些值。当我使用声明为的Gson实例并将其用于序列化Cls对象并将结果JSON字符串打印到控制台时,我得到了格式正确的格式,如下所示: 这一切都很好,但是当我然后创建一个JsonWriter(从具有绝对路径的FileWriter)并使用带有Cls 的Gson实例的方法时,生成的文件就不会得到很好的格式化。相反,它看起来像这样: 这打败了漂亮印刷的全

  • 问题内容: 如何在Python中打印深度约为4的字典?我尝试使用进行漂亮的打印,但是没有用: 我只是想为每个嵌套添加一个缩进(),以便获得如下内容: 等等 我怎样才能做到这一点? 问题答案: 我不确定您希望格式看起来如何,但是可以从这样的函数开始:

  • 问题内容: 我正在尝试(没有成功) 仅 打印给定方法的内容。以下代码 几乎 可以解决问题: 用它运行 导致 我想要得到的只是 没有签名,评论等任何内容。我该怎么做? 问题答案: 答案已经很老了,涉及编写很多代码。 从asm v5开始,打印方法说明很简单: 在实现ClassVisitor时,只需覆盖visitMethod方法。这里是一个例子: TraceMethodVisitor将由classVis

  • 问题内容: 如标题所述,是否有一种简单的方法可以将两列输出到Java中的控制台? 我知道,但是在使用printf时,我还没有找到基于特定列进行空间分配的方法。 问题答案: 使用宽度和精度说明符,将其设置为相同的值。这将填充太短的字符串,并截断太长的字符串。“-”标志将使列中的值左对齐。

  • 问题内容: 当我运行rspec时,是否有可能使capybara / selenium报告任何javascript console.errors和其他异常返回给rspec? 我有一堆测试都失败了,但是当我手动测试它时,我的应用程序正在运行。如果不知道仅在测试期间可能会阻塞我的单页Web应用程序的javascript错误,就很难弄清楚测试失败的原因。 我环顾四周,实际上还无法找到解决方案。 问题答案: