Вот как я это сделал:
альтернативный текст http://gallery.me.com/davedelong/100084/Screen%20shot%202010-07-06%20at%207.22.10%20PM/web.png?ver=12784658050001
AbstractListItem
- это абстрактная сущность, которая имеет свойство order и отношение к Folder
, которое указывает на (одного) родителя элемента.
Folder
- это конкретный дочерний элемент AbstractListItem
, который имеет отношение «ко-многим» к AbstractListItem
, что означает, что в папке может быть столько дочерних элементов, сколько нужно, AbstractListItems
(так что либо Folders
Feeds
).
Feeds
не являются чем-то особенным, за исключением того, что они также наследуются от AbstractListItem
(что означает, что у них есть порядок и родитель, и они могут быть потомками Folder
).
Итак, когда у вас есть папка, вы можете привести в порядок все ее дочерние элементы, выполнив что-то вроде:
NSArray * orderedChildren = [[aFolder children] sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES]]];
Чтобы получить элементы верхнего уровня, вы должны выполнить выборку для поиска всех AbstractListItem
объектов, где parent = nil
.