每个对象包含一个项目数组的对象数组,希望将项目添加到数组中

时间:2012-10-29 18:39:33

标签: iphone ios nsmutablearray

我正在开发应用程序商店的第一个应用程序。我以前做过编程,但这是我的第一个iOS应用程序。

我的问题需要一些解释: 我根据tableviews得到了这个应用程序。它包括以下内容:我的主屏幕(屏幕A),添加项目屏幕(屏幕B),详细屏幕(屏幕C)和最终添加细节项目屏幕(屏幕D)。

我的所有屏幕都从屏幕A中分离出来。屏幕A由一个带有对象的数组组成。每个对象都包含一系列细节。当您触摸屏幕A中的行/对象时,您将被屏蔽到屏幕C,您可以在其中查看给定行/对象的所有详细信息。

我的代表在屏幕A到屏幕B之间工作。

但是让我头疼的是当我想在屏幕A中为给定对象添加细节时。我希望能够在屏幕A中向我的对象添加一个细节对象,但是如何在已经对象数组时访问它在一个数组?

- (void)addBudgetViewController:(AddBudgetViewController *)controller didFinishAddingItem:(Budgets *)budget
{

int newRowIndex = [self.dataModel.budgetsList count];
[self.dataModel.budgetsList addObject:budget];

NSLog(@"Budget added");

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.我的budgetsInList是屏幕A中可预测的预算数组。但是如果我想在budgetsInList数组中向items数组中添加项目,那么代码是如何形成的?

Screens

Arrays

数组A是您可以在屏幕A中看到的预算列表。数组B是数组A中的数组(也是可变的)。屏幕B和D是向屏幕A添加预算并将项目添加到屏幕C。

- (void)addItemViewController:(AddItemViewController *)controller didFinishAddingItem:(Item *)item
{
int newRowIndex = [self.budgets.items count];
[[self.dataModel.budgetsList objectAtIndex:newRowIndex] addObject: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];

}

这是我正在尝试的这种情况,但这不起作用,因为我将项目对象添加到预算数组的budgetsList数组。我想要的是将项目对象添加到项目数组(数组B)。但是我该怎么做?

希望这有助于一些照片。 :-)

由于 关心Anders H. Opstrup

2 个答案:

答案 0 :(得分:0)

我必须承认,这很难理解你的问题,无论如何我试着回答一些看似清楚的事情:

  

但是如果我想将项添加到budgetsInList数组中的objects数组中,那么代码会是什么样的?

让我们有这两个数组:

  

阵列A和阵列B,两者都是可变的。

如果我理解了你的情况或多或少是这样的:数组B是数组A中的一个对象(示例中唯一的一个),并且你想要一个对象添加到数组B

[[arrayA objectAtIndex:index_of_array_b_in_a] addObject:the_object_you_want_add]

如果这是你的问题,请告诉我。

答案 1 :(得分:0)

如果数组A是数组数组,那么[arrayA objectAtIndex:0]将为您提供第一个数组(在您的解释中为arrayB)。因此,要将对象添加到arrayA中的第一个数组,只需执行以下操作:

[[arrayA objectAtIndex:0] addObject:anObject];