L'object géré n'est pas supprimé correctement dans ma database principale

J'essaie de supprimer certains objects de ma Entity Reservation . Je le fais comme ça.

 NSManagedObjectContext *context = reservation.managedObjectContext; [context deleteObject:reservation]; NSError *error = nil; if (![context save:&error]) { NSLog(@"Error is %@",error); } 

Après que je supprime mon object, je récupère l' entity entière à nouveau. Je peux voir que l'object est supprimé de mon entity . Mais quand je redémarre mon application, tous mes objects que j'ai supprimés dans la session précédente sont de nouveau stockés dans mon entity .

J'utilise le restkit de restkit pour stocker mes objects que j'ai récupérés à partir d'un service web. Aussi, quand je supprime l'object, je le supprime aussi dans ma database.

Lorsque je redémarre mon application et que je regarde mes journaux, je constate que je ne récupère pas l'object de mon service Web que j'ai supprimé lors de la session précédente, donc c'est oké. Le seul problème est qu'ils sont en quelque sorte stockés dans ma core database .

Je ne suis pas tout à fait sûr comment reskit gère l'logging / suppression sur les threads mais fondamentalement lorsque vous configurez votre NSManagedObjectContext sur le thread principal vous enregistrez pour les notifications.

 -(NSManagedObjectContext *)aContext { if (!_aContext) { _aContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mergeChanges:) name:NSManagedObjectContextDidSaveNotification object:nil]; } return _aContext; } 

Si une modification au context se produit sur un thread d'arrière-plan, une notification sera envoyée.

 -(void)mergeChanges:(NSNotification *)aNotification { // Merge the changes from the notification // on the main thread as this is the main // context for our application. dispatch_async(dispatch_get_main_queue(), ^{ [self.aContext mergeChangesFromContextDidSaveNotification:aNotification]; }); }