订购Coredata子实体

时间:2015-04-02 12:26:32

标签: arrays core-data tableview

我的名为Score的实体包含名为Messages的实体。这是one-to-many关系,我们可以为单个Messages提供多个Score

当我提取Score时,我可以访问NSOrderedSet中的Messages个对象,因为我在.xcdatamodel文件中勾选了Ordered。

他们没有正确订购,我想知道是否可以修复。

我在这样构建的数组的桌面视图中显示它们

//_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"在哪里(如果可能)告诉模型订购?例如。 " Ordered" tickbox似乎以一种不起作用的方式对它进行排序。

1 个答案:

答案 0 :(得分:1)

有序集合按照您最初填充关系的顺序排列(一次性或项目被添加到关系的末尾)。

因此,如果您可以保证可以按顺序添加它们,或者您编写一些代码以插入到正确位置的关系中,那么您可以继续使用当前代码。

或者,您可以创建一个使用关系'向后'的提取请求。查找指定Message的{​​{1}}并对其进行适当排序。这里的主要好处是,您可以决定更改排序顺序,如果您想要即时,您可以指定多个排序顺序(允许用户根据需要进行更改),并且您可以显式设置获取批量大小(如果你有很多消息可以帮助。)