2010-08-17 2 views
0

En espérant obtenir des conseils clairs sur celui-ci.mise à jour de base de données dans l'application en direct

Je veux ajouter des mises à jour à mon application lorsqu'elle est en ligne. Je prévois de le faire en modifiant le sqlite fourni avec l'application et ensuite télécharger l'application. Facile.

Je n'ai pas encore trouvé comment obtenir l'application pour voir les nouvelles données .. Je peux écraser le sqlite dans le répertoire de documents, mais l'application doit être redémarrée pour que les nouvelles données soient récupérées - non bien. Dans un premier temps cela ne me dérange pas si les modifications sont perdues, mais je cherche vraiment un moyen de conserver les modifications apportées aux données, et d'ajouter/supprimer des entrées basées sur le nouveau sqlite. Ce sera l'ensemble des données plutôt que les changements.

Je vais dans ce sens car les données sont assez complexes, mais gérables via une application de bureau basée sur le même modèle de données de base.

Existe-t-il un moyen commun, ou un moyen pour y parvenir?

Merci.

+0

Est-ce que quelqu'un a compris cela? Mon modèle n'a pas changé de v1 à v2. Mais pour v2 de mon application, je veux ajouter quelques enregistrements à la base de données SQL des utilisateurs. Je ne peux pas pour la vie de moi comprendre comment glisser dans quelques nouveaux records. – RyeMAC3

Répondre

2

Il n'existe pas de moyen simple de fusionner complètement à deux magasins de données Core SQL ou autre.

Le maintien de l'intégrité du graphe d'objets nécessite l'insertion de nouvelles données dans le magasin existant via un contexte utilisant le même modèle que celui utilisé pour créer le magasin. En d'autres termes, l'ajout par lots de nouvelles données au magasin est le même processus logique que l'ajout d'un élément à la fois à partir de l'interface utilisateur. Vous insérez des instances NSManagedObject, les remplissez, définissez leurs relations et les enregistrez.

En théorie, vous pourriez écrire de grandes quantités de code pour fusionner l'ancienne et la nouvelle base de données SQL dans un nouveau magasin SQL que les données de base pourraient lire. Cependant, c'est complexe, non pris en charge et susceptible de casser quand Apple revsera quelque chose dans le futur.

Je recommanderais que l'application elle-même télécharge les données au coup par coup à partir du serveur, puis insère les nouvelles données dans le magasin existant. Il est trivial d'envoyer des données en utilisant quelque chose comme JSON. Vous pouvez également télécharger un nouveau magasin, l'ajouter au coordinateur de magasin persistant existant, puis créer les clones des nouveaux objets dans l'ancien magasin. Ensuite, supprimez le magasin téléchargé du coordinateur et supprimez le fichier de magasin téléchargé.

+0

Merci TechZen, j'essayais d'éviter d'avoir à écrire une webapp (quoique simple) pour alimenter l'application iPhone. Je vais sur le chemin de JSON en traitant avec plusieurs magasins ne fonctionne pas. – michael

Questions connexes