Если предположить, что массив должен иметь форму «[AnyObject]», то что-то вроде этого:
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 {
// check d is a dictionary, else continue to the next
guard let data = d as? [String: AnyObject] else { continue }
data["count"] = 8
}
Но предпочтительно ваш массив будет набран как массив словарей:
var arrayOfData = [[String: 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 {
// swift knows that d is of type [String: AnyObject] already
d["count"] = 8
}
EDIT:
Таким образом, проблема заключается в том, что при изменении в цикле вы создаете новую версию словарь из массива и передать его обратно. Попробуйте использовать карту:
arrayOfData = arrayOfData.map{ originalDict in
var newDict = originalDict
newDict["count"] = 8
return newDict
}
Почему вы используете какой-либо объект, когда знаете, что это словарь? – Wain