如何将对象添加到数组中?

Posted

技术标签:

【中文标题】如何将对象添加到数组中?【英文标题】:How to add an object to array? 【发布时间】:2013-08-25 13:39:02 【问题描述】:

我正在使用 NSMutableArray 来填充表格视图中的单元格。问题是,当我尝试将一个对象添加到我的数组时,它会将所有对象替换为添加的对象,因此我的数组中始终只有 1 个对象。因此,每当调用以下方法时,我的 tableview 总是有一个单元格被覆盖。我错过了什么吗?

_selectedThingArray = [[NSMutableArray alloc] init];

_currentThing = newThing;
//Note: newThing is the object being passed when this method is called. 
//It is the new data that will should passed into the cell.

[_selectedThingArray addObject:_currentThing];

NSLog(@"%@", newThing);
NSLog(@"array: %@", _selectedThingArray);

[self.tableView reloadData];

【问题讨论】:

你确定你没有在你的代码中的其他地方修改你的数组吗? 我认为您只是在添加对象的方法中重新创建数组... _selectedThingArray = [[NSMutableArray alloc] init]; , 将创建移至 init 方法 每次调用上述代码时,您都在初始化 _selectedThingArray。奇怪的是,这意味着它只会包含一项。 如果你想在 selectedthingsarray 中保留前一组项目,你到底为什么要再次分配数组? _selectedThingArray = [[NSMutableArray alloc] init];这样做 if(!_selectedThingArray) _selectedThingArray = [[NSMutableArray alloc] init]; 那么你不应该在委托方法中每次都分配数组。你可以看到其他人的答案——他们都很好 【参考方案1】:

这条线是:

_selectedThingArray = [[NSMutableArray alloc] init];

每次“尝试添加对象”时执行?如果是,那么这是你的问题。您无需将对象添加到现有数组,而是将其替换为全新的数组并将对象添加到此新数组。

您需要在“尝试添加对象”之前的某个时间点创建数组,或者在您现在正在执行此操作的同一位置创建数组,但前提是您尚未创建数组。

【讨论】:

【参考方案2】:

在分配前加上这个 if 条件:

if(!_selectedThingArray) 
_selectedThingArray = [[NSMutableArray alloc] init];

不仅如此:

_selectedThingArray = [[NSMutableArray alloc] init];

一切都会解决的。

【讨论】:

并非一切。但它似乎不会在短期内失败。

以上是关于如何将对象添加到数组中?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中,如何将对象元素添加到数组中?

如何将更多对象添加到继续编号但不重新开始的对象数组中?

如何将对象添加到静态数组中

如何将带有对象的数组中的数据动态添加到嵌套数组中?

如何将对象数组添加到chartjs?

如何将对象添加到数组的顶部位置?