1

我知道有很多基于同一主题的问题。但似乎没有人能解决我的问题。

我有一个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

4

1 回答 1

5

这不是对先前添加的对象的覆盖 - 您看到这一点的原因是您两次添加了对同一对象的引用。你NSMutableArray看起来像这样:

[_singleBtn, _singleBtn]

NSMutableArray不会复制您插入的对象,因此您需要在插入新对象之前注意创建它们。

制作副本的一种方法是将其传递_singleBtn给将其复制到新字典中的方法,如下所示:

[_buttonArray addObject:[NSMutableDictionary dictionaryWithDictionary:_singleBtn]];
于 2013-09-11T14:12:46.527 回答