我正在尝试将nsmutabledictionaries添加到我的nsmutablearray中,但是当执行addobject时,它会用new覆盖以前的数据。如果我尝试添加一个字符串它工作正常,但如果我尝试添加一个nsmutabledictionary它不能正常工作。我知道之前已经说过这个问题,但似乎我找不到快速的语言。这是我的代码:
@IBAction func logAction(sender: UIButton) {
let buttonRow = sender.tag
let product_name = data2[buttonRow].name
let product_price = data2[buttonRow].price
let product_id = data2[buttonRow].id
productDictionary["product_name"] = product_name
productDictionary["price"] = product_price
productDictionary["id"] = product_id
let string = product_name
productArray.addObject(productDictionary)
print(productArray, "order ends here")
}
我将全局变量作为以下变量:
var productArray = NSMutableArray()
var productDictionary = NSMutableDictionary()
我在这里做错了什么?
答案 0 :(得分:2)
每次调用logAction()
时,您都会更改全球 productDictionary
的值。由于NSArray
不会存储您添加到其中的值的副本,因此您只需将每个引用添加到全局字典中时间。如果您要坚持使用NSMutableArray
和NSMutableDictionary
'(请参阅我对原始帖子的评论),那么请摆脱全球productDictionary
和而是每次调用logAction()
时创建一个 new 。换句话说,替换
productDictionary["product_name"] = product_name
productDictionary["price"] = product_price
productDictionary["id"] = product_id
productArray.addObject(productDictionary)
与
var productDictionary = NSMutableDictionary()
productDictionary["product_name"] = product_name
productDictionary["price"] = product_price
productDictionary["id"] = product_id
productArray.addObject(productDictionary)
let string = product_name
做了什么?