iphone - NSMutableArray addOject重写数据

标签 iphone ios objective-c

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

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

相关文章:

swift - 为什么 Objective-C dispatch_group_create() 可以返回 NULL 而 Swift DispatchGroup() 不能?

java - 如何使用j2objc在objectiveC ios项目中使用.jar库?

iphone - 核心数据 : any way to fetch multiple entities?

ios - 从 .ipa 文件中检索证书到期日期?

ios - 从不在 Storyboard中的 xib 文件中推送 segue?

ios - UITableViewCell 不显示 UILabel

ios - 当我滚动 UITableViewCell 时,在 iOS 中选择的图像发生变化之前

ios - 将带有自动布局的自定义 UIView 添加到 iCarousel

iphone - iPhone 上的响应式网站 - 从横向到纵向旋转时不需要的空白

iphone - 如何从任何地方对 applicationWillResignActive 使用react?