我正在使用SwiftyJSON
来解析JSON array
,并且无法弄清楚为什么在解析数组以填充Dictionary
时我无法使用这些值。
var dictionary = [String: String]()
for (index: String, subJson: JSON) in json[myArray] {
let name = subJson["name"].string
let value = subJson["value"].string
gameOwned += [name: value]
}
我在这一行收到此错误:
gameOwned += [name: value]
我将它添加到空字典中是错误的吗?我已经测试了name
和value
的值,并且打印出来没有任何问题。
答案 0 :(得分:0)
我对此代码有同样的问题:
func authParam(withParams: [String: AnyObject?]) -> [String: AnyObject?] {
var params: [String: AnyObject?] = ["user_nonce": self.user_nonce, "user_identifier": self.user_identifier];
params += withParams; //Error
return params;
}
我发现用
连接两个dictinariesvar a = ["one": "a"]
a += ["two": "b"]
是错误的,因为这样你就连接了两个数组而不是字典 - 所以swift期望一个以CGFloat为关键字的数组。
我找到了解决方案here at Stackoverflow。只需扩展字典类并添加合并函数
extension Dictionary {
mutating func merge<K, V>(dict: [K: V]){
for (k, v) in dict {
self.updateValue(v as Value, forKey: k as Key)
}
}
}
所以现在我可以毫不费力地合并我的词典
func authParam(withParams: [String: AnyObject?]) -> [String: AnyObject?] {
var params: [String: AnyObject?] = ["user_nonce": self.user_nonce, "user_identifier": self.user_identifier];
params.merge(withParams); //works fine
return params;
}