arraysswiftswift-dictionary

How to update swift dictionary value


I rewrite this code from php. And I find it difficult to make it work in swift.

var arrayOfData = [AnyObject]()

for index in 1...5 {
    var dict = [String: AnyObject]()
    dict["data"] = [1,2,3]
    dict["count"]  = 0

    arrayOfData.append(dict)
}

for d in arrayOfData {

    let data = d as AnyObject

    // I want to update the "count" value
    // data["count"] = 8
    print(data);
    break;
}

Solution

  • Presumably, you want to update the value inside of arrayOfData when you assign data["count"] = 8. If you switch to using NSMutableArray and NSMutableDictionary, then your code will work as you want. The reason this works is that these types are reference types (instead of value types like Swift arrays and dictionaries), so when you're working with them, you are referencing the values inside of them instead of making a copy.

    var arrayOfData = NSMutableArray()
    
    for index in 1...5 {
        var dict = NSMutableDictionary()
        dict["data"] = [1,2,3]
        dict["count"] = 0
    
        arrayOfData.addObject(dict)
    }
    
    for d in arrayOfData {
        let data = d as! NSMutableDictionary
        data["count"] = 8
        print(data)
        break
    }