如何在没有枚举的情况下从swift3中的字典数组中更新所有对象的键值?

时间:2017-02-01 08:09:18

标签: ios swift3

如何在没有枚举的情况下更新swift3中字典数组中所有对象的键值?

E.g

let tags = [Dict("key1":true, "key2":1),Dict("key1":true,
"key2":2),Dict("key1":false, "key2":3),Dict("key1":true, "key2":1),
Dict("key1": false, "key2":1)] 

现在我想为所有Dict对象更改"key1":false的值。

即我需要这样的输出

tag : [Dict("key1": false, "key2":1),Dict("key1": false,
"key2":2),Dict("key1":false, "key2":3),Dict("key1": false, "key2":1),
Dict("key1": false, "key2":1)]

我可以在没有枚举或迭代的情况下实现这一目标吗?怎么样?

1 个答案:

答案 0 :(得分:1)

您可以使用map功能:

let tags = [
    ["key1": true,  "key2": 1],
    ["key1": true,  "key2": 2],
    ["key1": false, "key2": 3],
    ["key1": true,  "key2": 1],
    ["key1": false, "key2": 1]]

let newTags = tags.map { (dict) -> [String : Any] in
    // dict is immutable, so you need a mutable shadow copy:
    var dict = dict

    dict["key1"] = false
    return dict
}

如Paulw11所述,此函数隐式迭代。在一般情况下,如果您需要更新所有条目, 可以迭代这些条目。

根据您的数据,您可以使用引用类型对要更新的值进行建模。这对于大型已知数据组共享相同状态的大型数据集非常有用。