J'ai du mal à ajouter un nouvel élément à ma vue de table avec les données de base. Voici la brève logique dans mes codes. Dans ma classe de ViewController, j'ai un bouton pour trigle le mode d'édition:Ajouter un nouvel élément à UITableView et Core Data en tant que source de données?
- (void) toggleEditing {
UITableView *tv = (UITableView *)self.view;
if (isEdit) // class level flag for editing
{
self.newEntity = [NSEntityDescription insertNewObjectForEntityName:@"entity1"
inManagedObjectContext:managedObjectContext];
NSArray *insertIndexPaths = [NSArray arrayWithObjects:
[NSInextPath indexPathForRow:0 inSection:0], nil]; // empty at beginning so hard code numbers here.
[tv insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView setEditing:YES animated:YES]; // enable editing mode
}
else { ...}
}
Dans ce bloc de codes, j'ai ajouté un nouvel élément à mon contexte d'objet géré courant d'abord, puis j'ai ajouté une nouvelle ligne à mon la télé. Je pense que le nombre d'objets dans ma source ou le contexte des données et le nombre de lignes à mon avis de la table devrait être 1.
Cependant, je suis une exception en cas de TabView: numberOfRowsInSection:
Mise à jour invalide: nombre de lignes incorrect dans la section 0. Le nombre de lignes contenues dans une section existante après la mise à jour (0) doit être égal au nombre de lignes contenues dans cette section avant la mise à jour (0), plus ou moins des lignes insérées ou supprimées de cette section (1 insérée, 0 supprimée).
L'exception a été soulevée juste après l'événement délégué:
- (NSInteger) tableView:(UITableView *) tableView numberOfRawsInSection:(NSInteger) section {
// fetchedResultsController is class member var NSFetchedResultsController
id <NSFechedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections]
objectAtIndex: section];
NSInteger rows = [sectionInfo numberOfObjects];
return rows;
}
En mode débogage, je trouve que les lignes était encore 0 et l'événement invoqué après la même de toggleEditing. Il semble que sectionInfo obtenu à partir de fetchedResultsController n'incluait pas le nouvel objet entité inséré. Vous ne savez pas si je manque quelque chose ou des étapes? Je ne suis pas sûr comment cela fonctionne: pour obtenir le fetcedResultsController notifié ou refléter le changement quand une nouvelle entité est insérée dans le contexte d'objet géré actuel?