我需要在Core Data的数组中存储两种类型的对象Feed
和Folder
。例如:
Array
Feed
Feed
Folder
Feed
Folder
Folder
…etc...
我知道BWOrderedManagedObject
用于在Core Data中按顺序存储对象,但我不确定如何存储混合对象(数组需要混合,因为项目按特定顺序排列)。理想情况下,我有一个指向两个实体的关系,但显然这是不可能的。
我能看到的唯一解决方案是使数组成为Transformable
属性。但是,存储在数组中的对象呢?我是否需要自己管理所有这些内容,还是仍然需要Core Data管理?
答案 0 :(得分:3)
以下是我的表现:
AbstractListItem
是一个抽象实体,具有order属性和与Folder
的关系,表示项目的(单个)父级。
Folder
是AbstractListItem
的具体子项,与AbstractListItem
具有多对多的关系,这意味着该文件夹可以包含所需的子项AbstractListItems
(所以Folders
或Feeds
)。
Feeds
并不特别,除了它们也从AbstractListItem
继承(意味着它们有一个订单和一个父级,并且可以是Folder
的子级。)< / p>
因此,一旦你有了一个文件夹,就可以通过以下方式让所有孩子顺利完成:
NSArray * orderedChildren = [[aFolder children] sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES]]];
要获取顶级项目,您需要执行抓取工作,查找AbstractListItem
所有parent = nil
个对象。