1

我对自定义对象有sort问题NSArrayNSArray必须按返回 an 的方法(int value因此它不是对象的属性)和属于该对象的属性进行排序。

所以假设 myarray包含一个NSArrayof PolygonObject。每个PolygonObject都有很多属性,其中之一是'height'。除此之外,我想通过计算每个多边形的面积sortarray所以我想要by (使用计算面积的方法)和by sort(对象的简单属性)。array'area'height

我知道如何NSArray使用方法(sortedArrayUsingComparatorsortedArrayUsingSelector...)和使用键(NSSortDescriptor)进行排序,但我不知道如何sort使用这两种方法。

我该怎么做?

4

3 回答 3

2

使用 sortedArrayUsingDescriptors: 并传递一个包含 2 个排序描述符的数组。第一个将进行主要排序,第二个将对其进行细化。可以使用 sortDescriptorWithKey:ascending:comarator: 创建排序描述符,以允许您编写自己的比较器来计算面积。

于 2013-05-24T00:11:31.683 回答
1

NSArray 公开了“sortUsingDescriptors”方法。此方法可以使用键数组并生成排序数组。

我会生成多个排序描述符并将它们添加到一个数组中。将此数组与 sortUsingDescriptors 方法一起使用

参考:https ://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html#//apple_ref/occ/instm/NSArray/sortedArrayUsingDescriptors :

于 2013-05-24T00:13:46.927 回答
1

当您设置多边形参数时,我会重新计算面积,然后在排序中使用该字段,而不是在每次将多边形对象与另一个对象进行比较时调用 area 方法来重新计算面积,但这取决于您。

您可能想看看如何使用 sortedArrayUsingDescriptors 对 NSMutableArray 进行排序,其中包含排序示例。

尤其是使用 2 个 NSSortDescriptors 的部分。

基本上,您为要排序的每个参数创建一个排序描述符,然后将它们放入一个数组并使用该数组进行排序。如果我没有误认为字段,您只需将字段名称作为字符串提供(请参阅链接的答案)。

于 2013-05-24T00:11:06.327 回答