我有阵列:
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。但是它没有退出...我喜欢循环(因为... ...)所以任何人都帮助我! :)很开心。
答案 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)
}