首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有没有办法把Swift词典打印到控制台上?

有没有办法把Swift词典打印到控制台上?
EN

Stack Overflow用户
提问于 2016-08-04 17:37:25
回答 17查看 92.4K关注 0票数 121
代码语言:javascript
运行
复制
NSDictionary *dictionary = @{@"A" : @"alfa",
                             @"B" : @"bravo",
                             @"C" : @"charlie",
                             @"D" : @"delta",
                             @"E" : @"echo",
                             @"F" : @"foxtrot"};
NSLog(@"%@", dictionary.description);

在控制台上打印以下内容:

代码语言:javascript
运行
复制
{
    A = alfa;
    B = bravo;
    C = charlie;
    D = delta;
    E = echo;
    F = foxtrot;
}
代码语言:javascript
运行
复制
let dictionary: [String : String] = ["A" : "alfa",
                                     "B" : "bravo",
                                     "C" : "charlie",
                                     "D" : "delta",
                                     "E" : "echo",
                                     "F" : "foxtrot"];
print(dictionary)

在控制台上打印以下内容:

代码语言:javascript
运行
复制
["B": "bravo", "A": "alfa", "F": "foxtrot", "C": "charlie", "D": "delta", "E": "echo"]

斯威夫特有没有一种方法可以让它成为漂亮的印刷词典,每个键值对占据一条新的线?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2016-08-04 18:47:04

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

用法:

代码语言:javascript
运行
复制
let dictionary: [String : String] = ["A" : "alfa",
                                     "B" : "bravo",
                                     "C" : "charlie",
                                     "D" : "delta",
                                     "E" : "echo",
                                     "F" : "foxtrot"]

dump(dictionary)

输出:

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

数组的详细视图:

代码语言:javascript
运行
复制
let names = ["Joe", "Jane", "Jim", "Joyce"]
dump(names)

指纹:

▿4元素 -乔 - 1:简 - 2: Jim - 3:乔伊斯

一本字典:

代码语言:javascript
运行
复制
let attributes = ["foo": 10, "bar": 33, "baz": 42]
dump(attributes)

指纹:

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

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

第一个参数没有标签。

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

代码语言:javascript
运行
复制
dump(attributes, name: "mirroring")

指纹:

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

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

票数 117
EN

Stack Overflow用户

发布于 2017-10-12 18:39:46

po 解决方案

对于那些希望在console中将字典看作JSON而没有转义序列的人,下面是一种简单的方法:

代码语言:javascript
运行
复制
(lldb) p print(String(data: try! JSONSerialization.data(withJSONObject: object, options: .prettyPrinted), encoding: .utf8)!)

更新

也看看这个答案吧。

票数 149
EN

Stack Overflow用户

发布于 2017-06-14 16:23:27

将字典转换为“AnyObject”对我来说是最简单的解决方案:

代码语言:javascript
运行
复制
let dictionary = ["a":"b",
                  "c":"d",
                  "e":"f"]
print("This is the console output: \(dictionary as AnyObject)")

对于我来说,这比转储选项更容易阅读,但请注意,它不会给出键值的总数。

票数 146
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38773979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档