Snažím sa pridať objekt do poľa, ktoré je vo vnútri poľa.
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.
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ď č. 1Keď 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: