Swift:[String:String]与CGFloat(SwiftJSON)不同

时间:2014-11-16 10:00:28

标签: json dictionary swift

我正在使用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]

我将它添加到空字典中是错误的吗?我已经测试了namevalue的值,并且打印出来没有任何问题。

1 个答案:

答案 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;
}

我发现用

连接两个dictinaries
var 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;
}