2013-07-08 1 views
0

J'ai quatre versions de mon modèle CoreData. Je viens d'ajouter le quatrième avec un petit changement, un nouvel attribut optionnel dans une entité. Entre la version 2 et 3, j'ai fait une erreur et fait une modification au modèle existant au lieu de créer une nouvelle version. J'ai restauré la version 2, ajouté la version 3 et forcé une suppression du magasin, de sorte que les utilisateurs qui mettaient à jour l'application généraient à nouveau le magasin et n'effectuaient pas de migration.Est-il possible d'effectuer plusieurs migrations CoreData légères avec MagicalRecord?

Cela a bien fonctionné, mais maintenant j'essaie d'effectuer une migration légère avec CoreData plus MagicalRecord, de la version 3 à 4 de mon magasin et je reçois toujours une erreur Can't find or automatically infer mapping model for migration. Je ne voudrais pas forcer la suppression à nouveau, mais je suis bloqué à ce que je peux faire d'autre pour résoudre la migration légère. Je commence à soupçonner que le problème se situe toujours entre les versions 2 et 3, mais je ne peux pas le confirmer.

Le code que je utilise pour mettre en place mon magasin est assez simple:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Store.sqlite"]; 

Répondre

1

Ce message d'erreur signifie généralement que vous avez supprimé ou non inclus soit la source ou le modèle de destination dans votre paquet d'applications, les données de base ne peuvent donc pas créer de modèle de cartographie pour vous. La façon de voir quelles entités sont effectuées est d'imprimer les hachages du modèle à la console et de comparer pour voir quelles entités ont changé. De là, vous pouvez déterminer comment vous devez construire votre modèle de cartographie. Souvenez-vous également que les migrations ne sont pas séquentielles. Vous avez 4 versions de votre modèle, ce qui signifie que vous avez maintenant 4 x 3 x 2 combinaisons de migration. Les données de base n'en feront qu'une, à partir de la version de votre magasin source et de la dernière version. Vous devez donc également tester les migrations de v1 vers v4, v2 vers v4, etc. pour couvrir toutes vos bases.

+0

Je peux clairement voir que le hachage de l'entité à laquelle j'ai ajouté un attribut est différent de la version 3 à 4 de mon modèle. Sur la base de votre réponse, il semble que je ne peux pas compter uniquement sur la migration légère pour cette affaire, ai-je raison? – amb

Questions connexes