按距离Objective-C排序

时间:2014-07-15 18:17:07

标签: ios objective-c nsmutablearray nsarray nssortdescriptor

我有一组Stop个对象,每个对象都包含一个

@property (nonatomic)CLLocationDistance distanceFromUser;

如何枚举数组并从最接近最远的方式对它们进行排序?这是我尝试过的代码,我没有得到排序数组。

NSSortDescriptor * ascendingDistance = [[NSSortDescriptor alloc] initWithKey:@"distanceFromUser" ascending:YES];
[_sortedStops sortedArrayUsingDescriptors:@[ascendingDistance]];

我是否必须使用一所旧学校'这样做的排序方法还是Obj-C有一个我可以用来轻松完成的功能?

1 个答案:

答案 0 :(得分:4)

  

...我没有得到排序数组。

假设您的-distanceFromUser方法正常工作,您确实会得到一个已排序的数组。但是你并没有把这个数组分配给任何东西,所以你永远不会知道。

看起来您希望对数组进行排序,但-sortedArrayUsingDescriptors:会返回一个新数组。这样做:

NSSortDescriptor * ascendingDistance = [[NSSortDescriptor alloc] initWithKey:@"distanceFromUser" ascending:YES];
NSArray *sortedArray = [_sortedStops sortedArrayUsingDescriptors:@[ascendingDistance]];