如何将对象添加到数组中?
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];
一切都会解决的。
【讨论】:
并非一切。但它似乎不会在短期内失败。以上是关于如何将对象添加到数组中?的主要内容,如果未能解决你的问题,请参考以下文章