2010-04-27 5 views
1

J'ai une application qui utilise Core Data sur SQLite, Maintenant, j'ai une mise à jour qui a des changements de structure DB disent l'ajout d'une nouvelle tableapplication iPhone mise à jour (à l'aide des données de base sur SQLite)

Je sais que lorsqu'un application se mettre à jour, il met à jour le binaire de l'application seulement, rien sur le répertoire du document sera changé.

Lorsque l'application est mise à jour et launchs à la première fois et exécuter

[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 

Il trouvera la différence entre le modèle de données et la structure DB SQLite et lancera une exception et quitter.

Erreur: « Le modèle utilisé pour ouvrir le magasin est incompatible avec celui utilisé pour créer le magasin »

Alors, quelqu'un peut-il ici me donner une idée comment mettre à jour une application quand il y a un changement de la structure DB ?

Je pense que nous pouvons exécuter un script DB pour créer cette nouvelle table quand elle lance la mise à jour pour la première fois. Mais s'il y a d'autres changements comme changer le type de certains champs ou supprimer certains champs, et que nous devons migrer les anciennes données, c'est vraiment un casse-tête. Dans ce cas, la seule façon de faire est de créer une nouvelle application?

Est-ce que quelqu'un a essayé quelque chose de similaire?

Répondre

7

Vous devez modifier votre modèle de données pour gérer les nouveaux champs que vous avez ajoutés. Apple a détaillé documentation à ce sujet. Si vous ajoutez simplement des champs, c'est plutôt facile. Je n'ai pas essayé de supprimer des champs, mais j'imagine que c'est aussi simple. Une fois que vous avez changé de domaine, vous introduisez un peu de complexité, mais ce n'est pas trop dur.

+0

Merci de m'avoir orienté dans la bonne direction, puisque j'ai des changements très complexes sur la nouvelle version que j'ai fait migrer, ça ne vaut pas la peine parce que seulement quelques copys ont été vendus et je l'ai retiré de la vente sur App Store. – owen

Questions connexes