2010-07-07 49 views
1

我需要在Core Data中的數組中存儲兩種類型的對象FeedFolder。例如:如何在覈心數據中存儲混合陣列

Array 
    Feed 
    Feed 
    Folder 
    Feed 
    Folder 
    Folder 
    …etc... 

我知道在覈心數據,以便存儲對象約BWOrderedManagedObject,但我不知道如何混合存儲對象(需要陣列中混合,因爲項目是在一個特定的順序)。理想情況下,我會有一個指向兩個實體的關係,但顯然這是不可能的。

我能看到的唯一解決方案是使數組成爲Transformable屬性。但是,數組中存儲的對象呢?我是否需要自己管理所有這些數據,還是由Core Data管理?

回答

3

下面是我已經做到了:

alt text http://gallery.me.com/davedelong/100084/Screen%20shot%202010-07-06%20at%207.22.10%20PM/web.png?ver=12784658050001

AbstractListItem是具有順序性,到Folder的關係,這表明項目的(單)父抽象實體。

FolderAbstractListItem一個具體的孩子,有一個一對多的關係AbstractListItem,這意味着它希望是AbstractListItems(所以無論是FoldersFeeds)的文件夾可以有許多兒童。

Feeds都沒有什麼特別的東西,但他們也從AbstractListItem繼承(這意味着他們有一個順序,父母,可以是一個Folder的兒童)。

所以一旦你有一個文件夾,你可以做這樣的事情讓所有的孩子依次是:

NSArray * orderedChildren = [[aFolder children] sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES]]]; 

爲了讓您的頂級項目,你會執行取尋找所有AbstractListItem對象在哪裏parent = nil