2012-11-02 134 views
0

我想将一个对象添加到数组内部的数组中。如何将对象添加到数组中的数组?

Screens

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

Arrays

所以我的模型,你可以在上面看到。我得到了包含对象A的数组A,每个对象都包含包含对象B的数组B.我的数组都是可变的。

对象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)中。 :/

在此先感谢。

+2

我不知道你在这里做什么或你的问题是什么。你有点混乱。 'addObjectFromArray:'这个名字意味着它会将另一个**数组中的对象**添加到'budgetsList'中,但是您将单个对象'item'传递给它。 – Tobi

回答

0

当你这样做:

NSArray *indexPaths = [NSArray arrayWithObject:indexPath]; 

您与数据混合演示。你需要的是得到这个索引路径对应的对象元素(你的情况的数组)。根据Table视图设计模式,每个表视图都会从底层的数据对象集合中读取其单元格。你有没有定义这个对象(最好是在单独的Objective-C .m和.h文件中)?

至于添加数组到另一个数组,NSArray只是期望NSObject作为元素,所以它是非常直接的添加到另一个。

NSArray *arrayB = [[NSArray alloc] init]; //any other initialization is good as well 
NSArray *arrayA= [NSArray arrayWithObject:arrayB]; 

上述代码适用于代码中的任何NSArrays对。

+0

我不想将数组添加到其他数组。我想将一个对象添加到另一个数组内的数组中。 – Opstrup

0

如果你想将一个对象添加到数组b中,然后使用:

[[[array A objectAtIndex:indexPath] arrayB] addObject:yourObject]; 

或者您可以使用(这是上面的代码扩展):

ObjectA *temp = [array A objectAtIndex:indexPath]; 

NSMutableArray *tempArray = [temp arrayB]; 

[tempArray addObject:yourObject]; 
+0

还有问题吗? –

+0

是的,我真的不能做这项工作。这是我正在尝试如此的票价\t'int newRowIndex = [self.budgets.items count]; [[[self.dataModel.budgetsList objectAtIndex:newRowIndex] items] addObject:item];'但我现在得到一个错误:“NSArray没有可见的@interface声明选择器addObject”我不知道这是什么意思.. :/ – Opstrup

+0

@Opstrup:您无法使用addObject方法将对象添加到“NSArray”。更改数组类型为'NSMutableArray' –

0

投下你的对象B到Item然后做

[self.dataModel.budgetList replaceObjectAtIndex:11 withObject:(Item)item]; 

此代码假设你要替换A和T内的现有对象他的索引是11.如果你想添加你只是使用insertObjectAtIndex: withObject:

+0

我不知道你的意思是把我的对象B到项目?你能链接任何关于转换的文档,或者可以解释它的含义吗?这是我的第一个应用程序,对不便: – Opstrup