2010-12-15 66 views
13

J'essaye de migrer un magasin sqlite d'iPhone/iPad d'environ 11Mb. Il a une trentaine d'entités différentes, toutes fortement liées entre elles.Migration de données de base de plusieurs passes en blocs avec iOS

Sur un 3GS, cela prend un certain temps. Même une migration légère prend environ quatre minutes. Je suppose que c'est parce que toutes les relations sont conservées en mémoire. En consultant le guide de migration d'Apple, il est indiqué que pour les ensembles de données volumineux, une approche consiste à effectuer plusieurs passes à l'aide de différents modèles de mappage.

Tout va bien. Cependant, il semble que vous ne puissiez pas faire cela si les entités d'un modèle de mappage sont liées à celles d'un autre. En fait, une erreur de compilation est générée le long des lignes de "ne peut pas générer automatiquement l'expression de valeur avec un nom de mappage nul" dans le fichier xcmappingmodel du modèle de mappage.

Des conseils très appréciés.

Un grand merci,

Max

+0

Salut Max - avez-vous déjà trouvé une réponse à cette question? Je viens juste de me rendre compte que je suis dans le même bateau que vous (un grand ensemble de données avec des entités hautement liées) et que certains appareils ne seront pas en mesure d'effectuer une migration. Je commence à penser que la seule façon de vraiment gérer cela serait de le faire complètement personnalisé (c'est-à-dire de ne pas utiliser NSMigrationManager du tout ... de recréer complètement le magasin de données vous-même ... bleargh). – glenc

+0

Pas encore j'ai peur que je suis passé à un autre projet. Ma technique consistait à faire une migration complètement personnalisée. La prochaine fois que je verrai mon collègue, je lui demanderai s'il a réussi à le résoudre. –

Répondre

1

Cant vous suffit de créer une nouvelle base de données avec la nouvelle scheema puis lancer le processus de migration en lisant de l'ancien et l'insertion de la nouvelle?

+0

Oui, c'est ce que j'ai fini par faire. C'était encore assez lent car tout est toujours en mémoire. Le traitement de toutes les relations est le problème. –