如何将对象添加到数组内的数组?

时间:2012-11-02 08:59:43

标签: iphone ios nsmutablearray

我正在尝试将对象添加到数组内的数组中。

Screens

这是我的故事板。屏幕A是一个包含对象A的数组的简单tableView,屏幕B向屏幕A添加新对象。每个对象A包含一个带有详细信息的数组(对象B),这些详细信息显示在屏幕C中,并向对象A添加详细信息屏幕D.

Arrays

所以我的模型如上所示。我得到包含对象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)中。 :/

提前致谢。

3 个答案:

答案 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: