我知道有很多基于同一主题的问题。但是似乎没有人能解决我的问题。
我有一个NSMutableArray
_buttonArray
和一个NSMutableDictionary
_singleBtn
。
当我按下按钮时,我将字典添加到数组中。但是数组正在被覆盖。
[_singleBtn setObject:scanBarCodeButton.titleLabel.text forKey:@"text"];
[_singleBtn setObject:NSStringFromCGRect(scanBarCodeButton.frame) forKey:@"frame"];
[_buttonArray addObject:_singleBtn];
在第一次迭代中,我得到以下信息:
{
frame = "{{20, 40}, {50, 40}}";
text = abc;
}
现在,如果我添加文本“xyz”,它将给我:
{
frame = "{{20, 90}, {80, 40}}";
text = xyz;
},
{
frame = "{{20, 90}, {80, 40}}";
text = xyz;
}
我已经在
viewDidLoad
中完成了数组和字典的分配
最佳答案
这不是先前添加的对象的覆盖-您看到的原因是您已两次添加对同一对象的引用。您的NSMutableArray
看起来像这样:
[_singleBtn, _singleBtn]
NSMutableArray
不会复制您插入的对象的副本,因此在插入新对象之前,您需要注意制作新对象。制作副本的一种方法是将
_singleBtn
传递给将其复制到新字典中的方法,如下所示:[_buttonArray addObject:[NSMutableDictionary dictionaryWithDictionary:_singleBtn]];
关于iphone - NSMutableArray addOject重写数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18743526/