Xcode: Mettre à jour des données CoreData lors d’une mise à jour
mardi 16 juillet 2013Il peut être utile de mettre à jour / créer ou détruire des données lors d’une mise à jour d’une application. Je vais vous donner un exemple de mise à jour de données d’une entité dans CoreData et ce qu’une seule fois lors de la mise à jour de l’application.
Voici le code que j’ai ajouter dans l’event didFinishLaunchingWithOptions dans Appdelegate
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"DidFixImagePathForPreviousVersions1"]) { NSManagedObjectContext *context = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:@"Entity" inManagedObjectContext:context]]; NSError *error = nil; NSArray *results = [context executeFetchRequest:request error:&error]; for(Entity *entity in results) { // ON modifie objet Entity et on sauve if (![context save:&error]) { // NSLog(@"Can't Update record! %@ %@", error, [error localizedDescription]); return; } } } [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"DidFixImagePathForPreviousVersions1"]; }
Dans cet exemple, j’utilise [NSUserDefaults standardDefaults] qui est utile pour savoir si on a déjà fait les changements dans CoreData. Cela évite de le faire à chaque fois. Ces valeurs de NSUserDefaults persistent entre chaque lancement (et chaque mise à jour) de ton application. Elle ne sera détruite que lors de sa désinstallation.