Ios 如何组合两个复杂的词典

Ios 如何组合两个复杂的词典,ios,swift,Ios,Swift,我很好奇如何组合两个字典,其中一个包含key和array,或者另一个字典作为值 用于简单组合,例如 var dict1 = ["bbb":"dict1", "her": "dict1"] let dict2 = ["aaa":"dict2", "her": "doct2", "bob": "doct2"] dict1 += dict2 // result is as

我很好奇如何组合两个字典,其中一个包含key和array,或者另一个字典作为值

用于简单组合,例如

    var dict1 = ["bbb":"dict1",
                 "her": "dict1"]

    let dict2 = ["aaa":"dict2",
                 "her": "doct2",
                 "bob": "doct2"]

    dict1 += dict2 // result is as I expected


    func += <K, V> (inout left: [K:V], right: [K:V]) {
        for (k, v) in right {
            left.updateValue(v, forKey: k)
        }
    }
我的问题是,你们是否有一种经过验证的方法来组合更复杂的词典

Upadate

结合dict1和complexDict2,我的预期结果是:

let resultDict    = ["aaa":"dict1",
                    "aaa":"dict2",
                    "her": "dict2",
                    "arr": ["one", "two"]]

这里的问题在于
dict1
complexDict2
的类型

dict1
被推断为具有类型
[String:String]
,而
complexDict2
被推断为具有类型
[String:Any]

如果在
dict1
上显式指定类型注释,则代码工作正常:

var dict1: [String : Any] = [
    "aaa":"dict1",
    "her": "dict1"
]

你想要的结果是什么,它与实际结果有什么不同?几乎每次我看到字典字典,都会出现一些可怕的狗屎秀,应该使用嵌套结构。我会对此保持谨慎。请注意,这不是一个问题。缺少的一个主要组件是,对于
complexDict
,您必须具有
import-Foundation
,才能具有推断类型
[String:NSObject]
,否则会导致错误:“表达式类型不明确,没有更多上下文”。一般来说,最好在操场上展示你的代码,看看它是否有效,然后逐字逐句地发布操场上的代码。我认为这应该有效,但在操场上尝试时出现了“致命错误:无法在不同大小的类型之间取消安全广播”的错误。但是,
[String:AnyObject]
工作正常。我还没有弄明白为什么会发生“任何”错误。(代码7.3.1)这很奇怪。我可以问你为什么这么做吗?我?我试图验证我认为是这个问题的答案哦,我把你搞糊涂了。@PhillipMills有趣的是,这里似乎很好:
var dict1: [String : Any] = [
    "aaa":"dict1",
    "her": "dict1"
]