我正在使用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;
}
请帮帮我。
谢谢!
答案 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:)];