Question

J'ai un modèle de données où il y a une entité personne, qui a un attribut transformables qui est un tableau de dictionnaires contenant des informations. Le modèle est beaucoup plus que cela, c'est juste la partie que je vais avoir du mal avec. Il a été conçu de cette façon par un ancien développeur, et à prendre en charge le projet, je dois migrer ce pour être des données essentielles 100%.

Alors, ce que je dois faire est de créer une nouvelle entité, alors l'étape à travers chaque dictionnaire dans le tableau de la personne et de créer de nouvelles instances de cette entité avec les informations de ce dictionnaire. Je pensais que je pouvais utiliser un NSEntityMigrationPolicy pour mettre en place une migration personnalisée pour cette nouvelle entité, mais il semble la migration de base de données prévoit un nombre X d'entités source pour se traduire par un nombre X d'entités de destination. Parce que j'ai techniquement 0 entités source en ce moment (parce qu'ils sont dans un tableau de base de données ne sait pas vraiment quoi que ce soit au sujet), je ne sais pas comment je peux faire la migration de créer de nouvelles entités au cours du processus.

Qu'est-ce, ou plutôt où dans la procédure de migration, est la meilleure façon de faire ce que je suis en train d'accomplir? J'ai toujours utilisé la migration légère dans le passé, c'est donc ma première aventure dans la migration personnalisée.

Était-ce utile?

La solution

Il serait utile d'avoir une idée de votre modèle de données (schéma) - mais supposons que votre entité Personne détient maintenant adresse et liste des restaurants préférés. Et supposons également que vous allez créer de nouvelles entités Adresse et restaurants ainsi que les relations suivantes:

personne a une adresse, donc il y a à une relation de personne à l 'adresse appelée « homeAddress ». Il y a une inverse à-plusieurs d'adresse à personne, parce que beaucoup de gens pourraient vivre à la même adresse.

personne a un à-plusieurs (appelés restaurants) aux restaurants. Restaurant pourrait dispose également d'un à-plusieurs à personne (bien que cela pourrait être l'un de ces cas où bidirectionnalité n'a pas vraiment de sens).

Quoi qu'il en soit, le point est que maintenant - en plus de votre sous-classe PersonToPerson NSEntityMigrationPolicy, vous aurez également PersonToAddress et PersonToRestaurant. Ceux-ci seront les endroits que vous déballez les anciennes données et l'utiliser pour instancier et initialiser les nouveaux objets d'adresses et un restaurant.

Bien sûr, il y a beaucoup d'autres problèmes compliquant. Par exemple, vous ne voulez pas être la création d'une nouvelle instance du même restaurant pour toute personne qui aime. Vous aurez besoin de garder une trace des restaurants nouvellement créés.

Vous voulez commander vos correspondances stratégiques -. Probablement avec PersonToPerson premier

Vous pouvez regarder le code Core Data de Marcus Zarra exemple et peut-être même acheter son livre .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top