Modify Object in Array with Swift?

前端 未结 2 1543
耶瑟儿~
耶瑟儿~ 2021-01-03 08:08

I have array:

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

and i want to change one contact in array:

相关标签:
2条回答
  • 2021-01-03 08:45

    Assuming we have the array like this:

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

    Using enumerate

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

    Iterate over indices:

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

    More aggressively, replace whole array using map:

    array = array.map { dic in
        if (dic["name"] as? String) == "bar" {
            return ["name": "newBar"]
        }
        return dic
    }
    
    0 讨论(0)
  • 2021-01-03 08:51

    You need to use an NSMutableDictionary instead, because you can't edit a NSDictionary.

    Then you've got also a typo. In your if-clause you use dic but you need dicx.

    After resolving that, in your if-clause you can do something like that:

    if (dicx.valueForKey("name") as String) == selectedName{
      dicx.setValue(value: yourObject, forKey: yourKey)
    }
    
    0 讨论(0)
提交回复
热议问题