多个排序描述符

时间:2011-11-05 05:46:50

标签: iphone objective-c core-data nssortdescriptor

指定多个排序描述符时:

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:lastName, firstName, age, nil];

假设lastName,firstName和age都是NSSortDescriptor类型,并且按名称建议密钥。

我只是想了解当我这样做会发生什么。假设我有一些核心数据(例如人员列表),我使用这些排序描述符对其进行排序。它是否会先尝试对姓氏进行排序,然后如果姓氏相同,请尝试按名字排序(只是那些姓氏相同的记录),然后iff的名字和姓氏是相同的,它会尝试按年龄排序(仅适用于那些记录)作为最后的手段。或者它会按照姓氏对列表进行排序,然后返回并按名字再次排序,然后再返回并按年龄排序?

1 个答案:

答案 0 :(得分:6)

它会做你想要的 - 第一个。我怀疑技术实现是否与您描述的相同,但结果是一样的。

可以实现技术实现的一种方法是对每个进行直接排序,但是以相反的顺序运行它们(第三类,然后是二级排序,然后是主排序)。这将具有您想要的结果的净效果,并且不要求每种排序都要注意其他排序,而是在主键上生成排序,由辅助键子排序,子排序再次由三级钥匙。但是,数据库能够采用的排序可能会更有效。好消息是你不需要知道它是如何工作的 - 它就是这样。 :)