15Fév

Mettre à jour Core Data dans une application iOS

Si on essaie de modifier la structure d’une base de données Core Data dans une application iOS déjà existante par ajouter une nouvelle entité ou un simple champ, l’application va s’arrêter au lancement, dans ce tutoriel on va voir comment faire cette mise à jour, en faisant ce qu’on appelle (lightweight migration).

 

1. On commence par créer un projet Xcode de type “Master Detail Application” et cocher la case “Use Core Data” (on peut ouvrir une application Core Data déjà existante) :

 

coredata-lm1

 

2. On compile le projet au moins une fois avec le simulateur, et après on essaie de modifier notre base de données en allant dans “NomProjet.xcdatamodeld”, on va ajouter un champ “title” de type “String” à l’entité “Event” déjà existante :

 

coredata-lm2

 

3. Maintenant on essaie de re-compiler le projet, et l’application va s’arrêter :

 

coredata-lm3

 

4. Pour pourvoir mettre à jour une base de données Core Date on doit faire ce qu’on appelle lightweight migration, on commence par supprimer le champ qu’on a ajouter et remettre la base à son état initial, on sélectionne le “NomProjet.xcdatamodeld” et on ajoute une nouvelle version en allant dans Editor > Add Model Version :

 

coredata-lm4

 

5. Maintenant on donne un nom à notre nouvelle version par exemple “MonProjet_v2” et on ajoute le champ “title” à notre nouveau model de données :

 

coredata-lm5

 

6. On sélectionne le nouveau model dans notre “Core Data Model” (s’il n’est pas sélectionné automatiquement) :

 

coredata-lm6

 

7. Maintenant on doit faire quelques changements dans “AppDelegate.swift”, on va ajouter des options à “persistentStoreCoordinator” > “coordinator.addPersistentStoreWithType” qui sont par default vide de type “nil” :

 

coredata-lm7

 

8. On ajoute les options suivantes :

try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true])

 

Maintenant on re-compile le projet et voilà ça marche 🙂

 

@end

 

Pour plus d’informations sur le lightweight migration : developer.apple.com

Partager cet Article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont marqués *

*

Fethi El Hassasna © Copyright 2017, Tous droits réservés