我需要与coredata建立IS-A关系。
我有一个具有以下结构的Page类
财产标题 PROPERTY layoutType 关系布局
现在,我有三个类:ImageLayout,TextLayout和SlideshowLayout。 我希望Page.layout关系根据layoutType属性引用这三个类中的一个。
我如何处理coredata? 或者有另一种方法可以做到这一点?请记住,布局的数量将来会增长,因此我不能简单地将所有属性放在页面中,并将与页面布局无关的属性留空。
提前谢谢!
答案 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
关系。