在NSMutableArray中添加元素之后,先前的元素被替换

时间:2017-06-27 11:15:51

标签: ios swift nsmutablearray nsmutabledictionary

我在app上工作,我想在其中创建包含NSDictionary数量的数组。当我试图在NSMutableArray中添加NSMutableDictionary时,之前添加的该元素的元素将被替换。我不知道发生了什么。代码如下:

var paynowArray = NSMutableArray()
let tempDict = NSMutableDictionary()
for i in 0...selectedEmenetsArray.count-1 {
    tempDict.removeAllObjects()
    tempDict.setValue(selectedIdAry[i], forKey: "serviceId")
    tempDict.setValue(selectedAmountAry[i], forKey: "serviceAmount")              
    paynowArray.add(tempDict)
}
print(paynowArray)

打印数组最后添加的NSMutableDictionary打印了n次。

提前致谢。

2 个答案:

答案 0 :(得分:1)

在for循环中创建tempDict 。您应该为每个元素分配字典。否则,您每次都要更换相同的内存位置值。

var paynowArray = NSMutableArray()
for i in 0...selectedEmenetsArray.count-1 {

    var tempDict = NSMutableDictionary()

    tempDict.setValue(selectedIdAry[i], forKey: "serviceId")
    tempDict.setValue(selectedAmountAry[i], forKey: "serviceAmount")              
    paynowArray.add(tempDict)
}
print(paynowArray)

答案 1 :(得分:0)

应该在循环内..

let tempDict = NSMutableDictionary()