J'ai maintenant trouvé que c'est assez simple une fois que vous savez où chercher.
Dans mon AppDelegate j'ai mis en place le NSPersistentStoreCoordinator - et vous avez besoin d'ajouter quelques options pour ce à dire qu'il à manipuler auto-migrer:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}
Ensuite, vous avez besoin de faire un petit truc dans xCode:
- Sélectionnez votre fichier xcdatamodel
- Sélectionnez le Menu en haut, puis Modèle de Données, puis choisissez Ajouter un Modèle de Version
- Votre fichier xcdatamodel seront ensuite déplacés dans un nouveau répertoire avec le même nom que votre fichier xcdatamodel mais avec l'extension xcdatamodeld - il y aura un deuxième fichier dans ce répertoire avec un 2 dans le nom. Sélectionnez le nouveau fichier, et de la Conception->Modèle de Données>Définir la Version Actuelle (dans Xcode 4 vous faites cela)
- Si vous avez déjà effectué les changements qui ont causé à votre projet d'être incompatibles - prendre ces changements de l'origine de fichier xcdatamodel. Si vous avez encore à faire les changements -, alors il suffit d'éditer le 2.fichier xcdatamodel (celui que vous venez de faire de la version actuelle).
- Maintenant, lorsque vous installez cette version sur un appareil qui a l'ancien modèle, il sera automatiquement mis à niveau que modèle pour le nouveau modèle.
Cela me semble excellent et aussi simple que je voulais, mais je pense que vous devez être prudent lors de développement que vous modifiez un modèle - sinon, vous devrez créer une nouvelle version pour chaque changement.
Je pense que ce que je vais faire c'est que je vais garder tous les fichiers modifiés et puis une fois que je m'apprête à déployer une mise à jour, je vais supprimer tous les en entre les fichiers et juste de déployer avec les plus anciens et les plus récents modèles.
Mise à JOUR (15/07/2011):
Grâce à @rockstarberlin de remarquer il y a une documentation à jour chez apple:
Xcode 4: la définition d'un Objet Géré Modèle de la Version Actuelle
Mise à jour: 8/19/2013 de mieux faire le lien:
https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html