CoreData提取失序

时间:2013-03-12 02:17:55

标签: objective-c core-data nsfetchrequest

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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