0

这似乎非常微不足道,我不应该问,但我还没有看到任何东西。如果我将一组对象(或“集合”)保存到 CoreData,为什么它总是乱序返回?每个数组没有特定的顺序(用户创建一个列表),所以我不相信有任何正则表达式或排序描述符可以工作。

4

3 回答 3

2

NSSet没有保证的顺序。您需要NSArray能够找到特定元素或控制返回集的顺序。

于 2013-03-12T02:24:20.890 回答
2

要保持用户定义的排序,您可以将整数属性(例如“sortOrder”)添加到数据模型中的相应实体。当用户更改列表中的顺序时,您可以使用此属性通过更新托管对象中的属性来手动跟踪排序顺序。然后,您将能够执行提取请求并根据“sortOrder”属性指定排序描述符,以按照原始用户定义的顺序获取从提取返回的结果。

如果您使用的是 iOS 5 或 10.7+,您可以创建模型,使其具有有序对多的关系。请参阅iOS 5.0/OS X 10.7 发行说明。在 Interface Builder 中,选择相关关系并选中“ordered”复选框。

于 2013-03-12T03:23:26.243 回答
1

因为 anNSSet 一个无序集合。您可以通过将任何排序描述符sortedArrayUsingDescriptors:应用于 your NSSet,这将返回一个NSArray有序的结果。

参考苹果的文档:https ://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html

于 2013-03-12T02:24:50.730 回答