在iPhone中的字典数组中对浮点数据进行排序?

时间:2012-06-29 21:38:33

标签: iphone sorting nsmutablearray nsmutabledictionary

我正在使用Dictionary的数组,它的格式为

 resultsArray = { 

id = 1;
name = test;
distance = 11.5;

id = 2;
name = test1;
distance = 0.5;

id = 3;
name = test2;
distance = 2.5;

id = 4;
name = test4;
distance = 1.5;

}

我想使用距离键和浮点类型中的距离对数组进行排序。那么我如何使用距离按升序对数组进行排序?

所以我期待这样的结果,

resultsArray = { 

id = 2;
name = test1;
distance = 0.5;

id = 4;
name = test4;
distance = 1.5;

id = 3;
name = test2;
distance = 2.5;

id = 1;
name = test;
distance = 11.5;

}

请帮帮我。

谢谢!

3 个答案:

答案 0 :(得分:1)

NSArray *sortedArray = [resultsArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"distance" ascending:YES]]];

答案 1 :(得分:0)

[resultArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [[obj1 objectForKey:@"distance"] compare:[obj2 objectForKey:@"distance"]];
}];

答案 2 :(得分:0)

还有一个解决方案:

@interface NSDictionary(sortingByDistance)
-(NSComparisonResult) compareByDistance:(NSDictionary*)dict;
@end
@implementation NSDictionary(sortingByDistance)
-(NSComparisonResult) compareByDistance:(NSDictionary*)dict {
    return [[self objectForKey:@"distance"] compare:[dict objectForKey:@"distance"]];
}
@end

现在要排序数组,您可以使用sortUsingSelector方法:

[resultArray sortUsingSelector:@selector(compareByDistance:)];