这似乎非常微不足道,我不应该问,但我还没有看到任何东西。如果我将一组对象(或“集合”)保存到 CoreData,为什么它总是乱序返回?每个数组没有特定的顺序(用户创建一个列表),所以我不相信有任何正则表达式或排序描述符可以工作。
问问题
195 次
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
有序的结果。
于 2013-03-12T02:24:50.730 回答