2015-04-02 64 views
0

我的實體Score包含名爲Messages的實體。這是一個one-to-many的關係,我們可以有多個Messages單個Score訂購Coredata子實體

當我提取我的Score時,我可以在NSOrderedSet中訪問我的Messages對象,因爲我在.xcdatamodel文件中打勾了Ordered。

他們只是無法正常有序,我想知道這是否可以修復的。

我在tableview中顯示它們來自建這樣

//_score exists and is set properly. 

someArray = array-alloc-init; 

for (Message *msg in _score.messages) 
{ 
    //Do my stuff because objects need remodeling in that view 
    // 
    [someArray addObject:msg]; 
} 

[tableview reloadData]; //the tableview uses someArray 

一切數組就像一個魅力除了它只是沒有按照正確的順序。

哪裏(如果可能的話),我可以告訴模型由「CreationDate」例如訂購。 「有序」複選框似乎以一種不起作用的方式排序。

+0

您設置了哪些項目?你真的想要一個有序的集合或一個排序? – Wain 2015-04-02 12:39:04

+0

嗯,我沒有拿到Type2,所以我怎麼排序呢?我只要使用type1.type2 編輯獲取的TYPE1對象,並獲得TYPE2:我會代替那些無聊的TYPE1和2名很混亂。 – 2015-04-02 12:48:48

+0

所以是的,我沒有獲取任何消息,我只是取得了我的分數,對他們來說,我在取數中使用排序描述符。然後在每個分數中,當我想要顯示這些消息時,我使用score.messages,並且我擁有這些消息,它們已經被「提取」了。這很酷,但如果我想要它們,我必須自己重新排列特定的集合。有沒有一種方法可以讓他們獲取特定的排序描述符,即使它們是Score實體的子實體? – 2015-04-02 12:51:52

回答

1

訂單集以您最初填充關係的任何順序(一次性或隨着項目添加到關係末尾)而定。

因此,如果您可以保證您可以按順序添加它們,或者您可以編寫一些代碼在正確的位置插入關係,那麼您可以繼續使用當前的代碼。

或者,您可以創建一個使用關係「向後」的獲取請求來查找指定的ScoreMessage,並對它們進行適當的排序。這裏最主要的好處是,如果您想即時更改排序順序,您可以指定多個排序順序(允許用戶根據需要進行更改),並且可以明確設置獲取批量大小(如果你有很多消息,這可以提供幫助)。

+0

感謝您的回答和額外的信息。沒有想到讓用戶在他的消息中選擇他想要的訂單。 :) – 2015-04-02 13:37:45