Ios 在NSMutableArray中添加元素后,将替换以前的元素

Ios 在NSMutableArray中添加元素后,将替换以前的元素,ios,swift,nsmutablearray,nsmutabledictionary,Ios,Swift,Nsmutablearray,Nsmutabledictionary,我正在开发一个应用程序,我想在其中创建一个包含NSDictionary数量的数组。当我试图在NSMutableArray中添加NSMutableDictionary时,先前添加的该数组元素将被替换。我不知道发生了什么事。代码如下: var paynowArray = NSMutableArray() let tempDict = NSMutableDictionary() for i in 0...selectedEmenetsArray.count-1 { tempDict.remov

我正在开发一个应用程序,我想在其中创建一个包含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次

提前感谢。

在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)

应该在循环中

let tempDict = NSMutableDictionary()