将 Swift 字典转换为字符串

问题描述 投票:0回答:5

为了测试和调试,我尝试将字典的内容放入字符串中。但不知道它将如何实现。是否可以?如果是的话,如何。

字典是从网络服务获取的,所以我不知道它的键值。我想使用应用程序中的数据。

在 Objective C 中 %@ 足以在 NSString 中存储任何内容。

swift ios8
5个回答
132
投票

只需使用

description
CustomStringConvertible
属性作为

Example:

注意:在 Swift 3 之前(或者可能之前),

CustomStringConvertible
被称为
Printable


41
投票

字典到自定义格式的字符串:

let dic = ["key1":"value1", "key2":"value2"]

let cookieHeader = (dic.flatMap({ (key, value) -> String in
    return "\(key)=\(value)"
}) as Array).joined(separator: ";")

print(cookieHeader) // key2=value2;key1=value1

14
投票

Jano 的答案使用 Swift 5.1

let dic = ["key1": "value1", "key2": "value2"]
let cookieHeader = dic.map { $0.0 + "=" + $0.1 }.joined(separator: ";")
print(cookieHeader) // key2=value2;key1=value1

1
投票

您可以直接打印字典,而无需将其嵌入到字符串中:

let dict = ["foo": "bar", "answer": "42"]

println(dict)
// [foo: bar, answer: 42]

或者您可以将其嵌入到像这样的字符串中:

let dict = ["foo": "bar", "answer": "42"]

println("dict has \(dict.count) items: \(dict)")
  // dict has 2 items: [foo: bar, answer: 42]

0
投票

我不确定

description
是将字典转换为 JSON 字符串的可靠方法。 苹果未来总有可能改变它。

我们应该使用 JSONSerialization:

let jsonData = try? JSONSerialization.data(withJSONObject: dict, options: [])
let jsonString = String(data: jsonData!, encoding: .utf8)!
© www.soinside.com 2019 - 2024. All rights reserved.