2010-08-28 6 views
0

J'ai un modèle de données de base avec 2 entités: Collection et Image. Il existe une relation un à plusieurs entre Colletion et Image, reflétée par un accesseur 'images' du côté Collection et un accesseur 'collection' du côté Image.Création de relations multiples entre objets

Il existe une relation supplémentaire appelée keyImage, qui est une relation 1: 1 entre Collection et Image. L'une des images de la collection est l'image clé et j'ai modélisé cela en créant une relation 1: 1 supplémentaire. Celui-ci a un accesseur appelé keyImage dans Collection et isKeyImageFor dans Image.

Je peux travailler avec ce modèle plutôt bien, il y a cependant une chose qui ne marche pas.

// Add an image as the key image. 
coll.keyImage = keyImage; 

// Add the image to the collection 
[coll addImagesObject:keyImage]; 

Ces deux lignes fonctionnent indépendamment. Cependant, si je fais les deux (l'image doit être à la fois dans la collection et assignée comme keyImage) alors keyImage finit par être nul après avoir sauvegardé les données. C'est comme si la relation 1: N annule la relation 1: 1, même si elles utilisent des clés et des accesseurs séparés.

Une idée de comment je peux faire fonctionner ça?

+0

à quoi ressemblent les fichiers sources? avez-vous écrit du code par vous-même? –

Répondre

0

Je ne pense pas que vous puissiez faire en sorte que les données de base le fassent. Vous avez créé deux relations contradictoires. Peut-être ajouter une propriété 'isKeyImage' à l'entité Image, puis vous pourrez extraire l'image unique avec ce jeu de propriétés. Vous pouvez également conserver l'image clé distincte des images.

Malheureusement, je pense que vous auriez besoin d'une entité KeyImage distincte définie dans Core Data, avec sa propre relation de Collection. Je serais heureux d'apprendre que vous pouvez faire plusieurs liens entre les mêmes entités.

0

"keyImage" collision de noms de variables?

coll.keyImage = keyImageObject;

[coll addImagesObject: keyImageObject];

Questions connexes