2015-04-02 65 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