Ios 如何组合两个复杂的词典
我很好奇如何组合两个字典,其中一个包含key和array,或者另一个字典作为值 用于简单组合,例如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
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"
]