0

私は辞書の配列を持っています、そしてそれはのフォーマットにあります、

 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;

}

距離キーとfloat型の距離を使用して配列を並べ替えたい。では、距離を昇順で使用して配列を並べ替えるにはどうすればよいですか?

だから私はこのような結果を期待しています、

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;

}

私を助けてください。

ありがとう!

4

3 に答える 3

1
NSArray *sortedArray = [resultsArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"distance" ascending:YES]]];
于 2012-06-29T21:49:20.673 に答える
0
[resultArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [[obj1 objectForKey:@"distance"] compare:[obj2 objectForKey:@"distance"]];
}];
于 2012-06-29T21:47:13.020 に答える
0

そしてもう1つの解決策:

@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:)];
于 2012-06-29T22:11:30.217 に答える