Je suis nouveau à la programmation Objective-C donc désolé pour la question boiteuse.iOS NSMutableArray insertObject index hors limite
J'essaye d'écrire une application simple qui ajouterait des nombres simples stockés dans le NSMutableArray à la vue de table.
Voici le code d'initialisation et le code pour la méthode addItem():
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Test App";
self.navigationItem.leftBarButtonItem = self.editButtonItem;
addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addItem)];
self.navigationItem.rightBarButtonItem = addButton;
self.itemArray = [[NSMutableArray alloc] initWithCapacity:100];
}
- (void)addItem {
[itemArray insertObject:@"1" atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
Cette ligne
[itemArray insertObject:@"1" atIndex:0];
produit l'erreur suivante:
*** -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array'
Pourquoi l'index 0 est au-delà des limites pour tableau vide et ce que je fais mal ???
UPD
Comme BP a fait remarquer, l'insertion dans un tableau peut ne pas fonctionner pour tableau vide, donc j'ajouté vérification suivante:
if ([itemArray count] == 0) {
[itemArray addObject:@"1"];
} else {
[itemArray insertObject:@"1" atIndex:0];
}
Alors maintenant, je reçois même message d'erreur, mais à la ligne
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
Des idées sur ce qui pourrait ne pas fonctionner avec elle?
Merci, ça m'a aidé. Mais maintenant je reçois la même erreur, mais 2 lignes ci-dessous. Des idées quel est le problème avec ça? – IvanR