使用Swift修改数组中的对象?

时间:2015-02-11 11:58:08

标签: arrays swift for-loop nsdictionary

我有阵列:

var arrDicContact = udContact.valueForKey("arrDicContact") as [NSDictionary]

我希望更改数组中的一个联系人:

 for let dicx:NSDictionary in arrDicContact{
     if (dic.valueForKey("name") as String) == selectedName{
        //how to modify dic to newdic: dic = newdic
     }
 }

我可以使用for循环使用int i从0到arrDicContact.count-1。但是它没有退出...我喜欢循环(因为... ...)所以任何人都帮助我! :)很开心。

2 个答案:

答案 0 :(得分:17)

假设我们有这样的数组:

var array:[NSDictionary] = [["name":"foo"],["name":"bar"],["name":"baz"]]

使用enumerate

for (idx, dic) in enumerate(array) {
    if (dic["name"] as? String) == "bar" {
        array[idx] = ["name": "newBar"]
    }
}

迭代indices

for idx in indices(array) {
    if (array[idx]["name"] as? String) == "bar" {
        array[idx] = ["name": "newBar"]
    }
}

更积极地使用array替换整个map

array = array.map { dic in
    if (dic["name"] as? String) == "bar" {
        return ["name": "newBar"]
    }
    return dic
}

答案 1 :(得分:0)

您需要使用NSMutableDictionary,因为您无法编辑NSDictionary

然后你也有一个错字。在if-clause中,您使用dic,但需要dicx

解决之后,在你的if子句中,你可以这样做:

if (dicx.valueForKey("name") as String) == selectedName{
  dicx.setValue(value: yourObject, forKey: yourKey)
}