/ / Ako pridám objekty do poľa, ktoré je vo vnútri poľa? - iphone, ios, nsmutablearray

Ako pridať objekty do poľa, ktoré je vnútri poľa? - iphone, ios, nsmutablearray

Snažím sa pridať objekt do poľa, ktoré je vo vnútri poľa.

obrazovky

Tu je môj storyboard. Obrazovka A je jednoduchý tableView obsahujúci pole s objektom A, obrazovka B pridá nové objekty na obrazovku A. Každý objekt A obsahuje pole s podrobnosťami (objekt B), tieto podrobnosti sú zobrazené na obrazovke C a do objektu A pridáte podrobnosti obrazovka D.

poľa

Takže môj model je taký, ako môžete vidieť vyššie. Dostal som objekt A obsahujúci pole A, každý objekt obsahuje pole B obsahujúci objekt B. Obe moje polia sú premenlivé.

Objekt A = rozpočet Objekt B = položka

Neviem zistiť, ako pridať objekt B do poľa 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];

To je to, čo robím, cestovné. Môj problém je v tom, že pridávam položku (objekt B) do poľa rozpočtu (pole A). : /

Vopred ďakujem.

odpovede:

0 pre odpoveď č. 1

Keď to robíte:

NSArray *indexPaths = [NSArray arrayWithObject:indexPath];

Prezentáciu miešate s údajmi. To, čo tu potrebujete, je získať prvok objektu (vo vašom prípade pole), ktorému táto indexová cesta zodpovedá. Podľa vzoru dizajnu zobrazenia tabuľky každé zobrazenie tabuľky číta svoje bunky zo základnej kolekcie dátových objektov. Definovali ste tento objekt (najlepšie v samostatných súboroch .m a .h)?

Pokiaľ ide o pridanie poľa do iného poľa, NSArray iba očakáva, že NSObject bude ako prvok, takže je celkom jednoduché pridať jeden do druhého.

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

Vyššie uvedený kód je platný pre každú dvojicu NSArrays vo vašom kóde.


0 pre odpoveď č. 2

Ak chcete pridať objekt do poľa B, potom použite:

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

Alebo môžete použiť (jedná sa o rozšírenie nad kód):

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

NSMutableArray *tempArray = [temp arrayB];

[tempArray addObject:yourObject];

0 pre odpoveď č. 3

Preneste svoj objekt B na Item potom urob

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

Tento kód predpokladá, že chcete nahradiť existujúci objekt vo vnútri A a index je 11. Ak chcete pridať, stačí použiť insertObjectAtIndex: withObject: