Swift字典到字典数组

时间:2018-07-04 11:17:30

标签: swift dictionary

我有一个Strings和Bools的字典,这里简化了:

var dict: [String : Bool] = ["A": true, "B": false, "C": true]

我想将其转换为如下所示的字典数组(即dict键和值都将成为另一个词典中的值,但是每个词典键和值都将具有“ id”和“ enabled”的新词典键:

var array = [["id": "A", "enabled": true], ["id": "B", "enabled": false], ["id": "C", "enabled": true]]

我无法找到解决方案。最好的方法是什么?

谢谢。

2 个答案:

答案 0 :(得分:6)

在键/值对上使用map

 let dict: [String : Bool] = ["A": true, "B": false, "C": true]

 let array = dict.map { key, value in ["id": key, "enabled": value] }

 print(array)

输出:

[["id": "C", "enabled": true], ["id": "B", "enabled": false], ["id": "A", "enabled": true]]

map的结果是一个数组。在这种情况下,它是[[String : Any]]-具有String键和Any值的字典数组。在字典上运行map会在字典的每个键/值对上执行闭包,并返回结果数组的值。在这种情况下,我们将返回从[String : Any]key构建的value字典。

答案 1 :(得分:2)

Swift 4.0

您必须采用[String : Any]字典数组。

var dict: [String : Bool] = ["A": true, "B": false, "C": true]

var array: [[String : Any]] = []

for (key,value) in dict {
    array.append(["id" : key, "enabled" : value])
}

print(array) // [["id": "C", "enabled": true], ["id": "B", "enabled": false], ["id": "A", "enabled": true]]