2010-10-25 4 views
3

Considérons une base de données SQLite pour une application iPhone avec des «documents» comme modèles. L'utilisateur peut également ajouter ses propres modèles.mise à jour de la base de données sqlite pour l'iphone

Je souhaite mettre à jour le programme et la base de données. Y a-t-il une chance de le faire sans écraser les données de l'utilisateur?

J'ai considéré deux bases de données différentes, mais puisque c'est un surcoût, je veux éviter cette option.

Comment cela peut-il être fait sans écraser les données de l'utilisateur?

Répondre

0

Vous pouvez faire en sorte que votre application vérifie les anciennes versions de la base de données lorsqu'elle s'exécute et la mettre à jour elle-même si nécessaire. Donc, fondamentalement, mettre à jour l'application et il va gérer la mise à jour de la DB. Cela vous permettrait de sauvegarder/restaurer des données (si nécessaire).

+0

C'était ma pensée. – BobbyShaftoe

0

Lors de la mise à jour de votre application et de sa banque de données, envoyez les scripts ALTER dans le package de mise à niveau. Lorsque la première application fonctionne, il devrait:

  • vérifier si la base de données a besoin de mettre à jour (numéro de version, etc.)
  • exécuter les scripts ALTER et UPDATE à prendre le schéma et les données de v1 à v2
1

Si vous utilisez des données de base, il devrait être relativement facile d'ajouter une nouvelle version de modèle de données (schéma) et d'avoir une migration automatique. Avec quelques modifications mineures, vous devrez peut-être créer un modèle de mappage. Et si votre schéma change de manière significative avec des entités en cours de refactorisation, des niveaux d'abstraction étant ajoutés, etc., vous devrez peut-être sous-classer NSEntityMigrationPolicy.

Vous pouvez regarder le Core Data Model Versioning and Data Migration Programming Guide

Vous pouvez regarder aussi livre « Core Data » de Marcus Zarra et le code échantillon.

Questions connexes