与coredata建立IS-A关系

时间:2010-09-17 13:12:37

标签: iphone objective-c core-data

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

我有一个具有以下结构的Page类

财产标题 PROPERTY layoutType 关系布局

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

我如何处理coredata? 或者有另一种方法可以做到这一点?请记住,布局的数量将来会增长,因此我不能简单地将所有属性放在页面中,并将与页面布局无关的属性留空。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

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

E.g。创建一个名为layout的抽象实体。它可能没有属性保存这样的关系(伪代码):

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.layout实例的Page关系。