2010-09-17 8 views
0

J'ai besoin de mettre en place une relation IS-A avec coredata.Construire une relation IS-A avec coredata

J'ai une classe de page qui présente la structure suivante

titre de propriété PROPRIÉTÉ layoutType RELATION mise en page

Maintenant, j'ai trois classes: ImageLayout, TextLayout et SlideshowLayout. Je souhaite que la relation Page.outout fasse référence à l'une de ces trois classes en fonction de la propriété layoutType.

Comment puis-je faire avec coredata? Ou existe-t-il un autre moyen de le faire? Gardez à l'esprit que le nombre de mises en page peut augmenter dans le futur, donc je ne peux pas simplement mettre toutes les propriétés dans la page et laisser vides celles qui ne sont pas liées à la mise en page de la page.

Merci d'avance!

Répondre

0

Vous utilisez l'héritage d'entité. Vous créez une entité parente qui peut être abstraite ou concrète. Ensuite, vous affectez le parent à la relation Page.layout. Lorsque vous avez besoin de différentes trouvailles de dispositions, vous créez des sous-entités (comme une sous-classe) du parent. Le graphique d'objet acceptera toutes les sous-entités de la relation.

E.g. Créez une entité abstraite appelée disposition. Il peut avoir aucun attribut sauver la relation comme si (pseudo-code):

Page{ 
    //...various attributes 
    layout<-->Layout.page 
} 

Layout{ 
    page<-->Page.Layout 
} 

ImageLayout:Layout{ 
    imageName:string 
} 

TextLayout:Layout{ 
    text:string 
} 

SlideshowLayout:Layout{ 
    numberOfSlides:int 
} 

Vous pouvez assigner une seule instance de ImageLayout, TextLayout ou SlideshowLayout à la relation Page.layout de toute instance Page.

+0

Merci TechZen! Merci beaucoup! :) –

Questions connexes