J'ai besoin de comprendre quelque chose sur la mise à jour de NSManagedObjectContext. J'ai un UISplitView avec un UITableViewController sur la RootView et un UIViewController sur la Detail View. Lorsque je tape sur une ligne contenant des données, je charge certaines données dans des étiquettes et une UITextView où je peux mettre à jour ce champ :
- (void)textViewDidEndEditing:(UITextView *)textView {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
[[listOfAdventures objectAtIndex:indexPath.row] setAdventureDescription:textView.text];
}
Ok. Cela fonctionne correctement, la description est mise à jour. Aussi, quelqu'un pourrait vouloir supprimer une ligne :
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"playerPlaysAdventure.adventureName==%@",[[listOfAdventures objectAtIndex:indexPath.row] adventureName]];
NSArray *results = [[AdventureFetcher sharedInstance] fetchManagedObjectsForEntity:@"Player" withPredicate:predicate withDescriptor:@"playerName"];
[moc deleteObject:[listOfAdventures objectAtIndex:indexPath.row]];
for ( Player *player in results ) {
[moc deleteObject:player];
}
[listOfAdventures removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
[self clearDetailViewContent];
NSError *error = nil;
if ( ![moc save:&error] ) {
NSLog( @"Errore nella cancellazione del contesto!" );
abort();
}
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
Voici donc mon problème : si je commente les rangées concernant la sauvegarde de mon MOC, l'aventure n'est que momentanément supprimée. Si vous quittez l'application et que vous la rouvrez, l'objet est toujours là. Cela ne se produit pas avec la mise à jour d'un champ. J'aimerais savoir pourquoi et si je dois sauvegarder le MOC également dans la méthode textViewDidFinishEditing. Merci d'avance.