繁体   English   中英

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

[英]How to update value of a key of all objects from array of dictionary in swift3 without enumeration?

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

例如

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 对象的值 if "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)]

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

您可以使用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 所提到的,这个函数仍在隐式迭代。 在一般情况下,你,如果你需要更新他们都遍历条目。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM