我正在尝试将对象添加到数组内的数组中。
这是我的故事板。屏幕A是一个包含对象A的数组的简单tableView,屏幕B向屏幕A添加新对象。每个对象A包含一个带有详细信息的数组(对象B),这些详细信息显示在屏幕C中,并向对象A添加详细信息屏幕D.
所以我的模型如上所示。我得到包含对象A的数组A,每个对象包含包含对象B的数组B.我的数组都是Mutable。
对象A =预算 对象B =项目
我无法弄清楚如何将对象B添加到数组B。
- (void)addItemViewController:(AddItemViewController *)controller didFinishAddingItem:(Item *)item
int newRowIndex = [self.budgets.items count];
[self.dataModel.budgetsList addObjectFromArray:item];
NSLog(@"Item with name %@ added", item.name);
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
[self dismissViewControllerAnimated:YES completion:nil];
这就是我正在做的事情。我的问题是我将项目(对象B)添加到预算数组(数组A)中。 :/
提前致谢。
答案 0 :(得分:0)
当你这样做时:
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
您正在将演示文稿与数据混合。你需要的是得到这个indexpath对应的object元素(在你的例子中是数组)。根据Table视图设计模式,每个表视图都从底层数据对象集合中读取其单元格。您是否定义了此对象(最好是在单独的objective-c .m和.h文件中)?
至于将数组添加到另一个数组中,NSArray只需要将NSObject作为元素,因此将它们添加到另一个数组中非常简单。
NSArray *arrayB = [[NSArray alloc] init]; //any other initialization is good as well
NSArray *arrayA= [NSArray arrayWithObject:arrayB];
以上代码对代码中的任何一对NSArray都有效。
答案 1 :(得分:0)
如果要将对象添加到阵列B,请使用:
[[[array A objectAtIndex:indexPath] arrayB] addObject:yourObject];
或者您可以使用(这是上述代码的扩展):
ObjectA *temp = [array A objectAtIndex:indexPath];
NSMutableArray *tempArray = [temp arrayB];
[tempArray addObject:yourObject];
答案 2 :(得分:0)
将对象B投射到Item
,然后执行
[self.dataModel.budgetList replaceObjectAtIndex:11 withObject:(Item)item];
此代码假设您要替换A中的现有对象,索引为11.如果要添加,只需使用insertObjectAtIndex: withObject: