2010-09-17 55 views
0

我需要与coredata建立IS-A关系。与coredata建立IS-A关系

我有具有以下结构

产权 PROPERTY layoutType 关系的配置

现在Page类,我有三大类:ImageLayout,则TextLayout和SlideshowLayout。 我希望Page.layout关系根据layoutType属性引用这三个类中的一个。

我该怎么做coredata? 还有另一种方法可以做到这一点?请记住,布局的数量可以在将来增长,所以我不能简单地将所有属性放在页面中,并留出与页面布局无关的空白。

预先感谢您!

回答

0

您使用实体继承。您可以创建一个可以是抽象或具体的父实体。然后,您将父母分配给Page.layout关系。当您需要不同的布局查找时,可以创建父项的子实例(如子类)。对象图将接受关系中的任何子实体。

E.g.创建一个称为布局的抽象实体。它可能没有属性的保存,像这样(伪)的关系:

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

Layout{ 
    page<-->Page.Layout 
} 

ImageLayout:Layout{ 
    imageName:string 
} 

TextLayout:Layout{ 
    text:string 
} 

SlideshowLayout:Layout{ 
    numberOfSlides:int 
} 

您可以ImageLayout,则TextLayout或SlideshowLayout的任何单个实例分配给任何Page实例的Page.layout关系。

+0

谢谢TechZen!万分感谢! :) – 2010-09-17 17:48:15