2012-02-01 2 views
2

j'ai 3 entités comme celui-ci:n'a pas de données de base prennent automatiquement en charge des relations inverses

sorry that this image has a problem that the "day" relationship of "Week" entity should be to-many, there should be 2 arrows on the end of the relationship

désolé que cette image a un problème que la relation « jour » de l'entité « Semaine » devrait être de -moi, il devrait y avoir 2 flèches à la fin de la relation

maintenant voici 2 questions.

1er. Pour tout jour de classe (sous-classe sur mesure de NSManagedObject) objets, après que je prends soin de ses relations comme:

Week* aWeek; 
Day *aDay; 
[aWeek addDayObject:aDay]; 

alors je peux vraiment trouver le jour à travers la relation de la Semaine de l'entité « jour »,

mais inversement, j'ai trouvé que la relation "thisWeek" de l'objet Day "aDay" est toujours nulle.

J'ai entendu dire que après avoir creat votre sous-classe de NSMangedObject, vous avez des méthodes comme

- (void)addXXXObject:(xxx)xxx 

pour vous aider à traiter à de nombreuses relations et prendrait automatiquement en charge la relation inverse.

mais ici, il semble pas. Donc, dois-je traiter avec la relation inverse par mon auto,

ou si les données de base fournissent, comment puis-je faire ajouter automatiquement l'objet sur la relation inverse?

2ème. Supposons qu'il y ait beaucoup de "Jour" avec une "Semaine", connectés par leur relation, ce que je veux, chaque fois que l'utilisateur supprime un des Jours, nous vérifions si la Semaine a encore quelques Jours en relation,

si elle ne, laissez l'utilisateur supprimer ce jour,

sinon, on supprime aussi l'objet « semaine ».

Alors, quelle règle de suppression de la relation to-many dois-je utiliser?

Je ne suis pas si clair avec ces règles ..

Merci!

Répondre

5

CoreData devrait réellement prendre soin de la relation inverse tant que vous l'avez défini dans les deux entités. Voir here.

J'utiliser règle de suppression annulent pour la jour-> relation semaine et cascade pour semaine-> jour.
Lorsque vous supprimez la semaine, tous les jours associés à celle-ci sont également supprimés.
Lorsque vous supprimez un jour, il sera supprimé des jours de la semaine. Vous ne pouvez pas supprimer automatiquement la semaine alors qu'elle n'a plus de jours. Vous pouvez, cependant, observer les jours de la semaine et supprimer auto si self.days.count == 0.

+0

Merci beaucoup! C'est vraiment utile! –

Questions connexes