我知道基于同一主题有很多问题。但似乎没有人解决我的问题。
我有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
答案 0 :(得分:5)
这不是对先前添加的对象的覆盖 - 您认为这是因为您已经两次添加对同一对象的引用。您的NSMutableArray
看起来像这样:
[_singleBtn, _singleBtn]
NSMutableArray
不会复制您插入的对象,因此在插入新对象之前需要注意这些对象。
制作副本的一种方法是将_singleBtn
传递给将其复制到新字典中的方法,如下所示:
[_buttonArray addObject:[NSMutableDictionary dictionaryWithDictionary:_singleBtn]];