2013年3月14日木曜日

NSArrayのソート

NSArrayをソートするには、sortedArrayUsingComparatorメソッドを使います。

数値を降順にソートする場合


NSArray *num_array = [NSArray arrayWithObjects:[NSNumber numberWithInt:0]
 , [NSNumber numberWithInt:3]
 , [NSNumber numberWithInt:2]
 , [NSNumber numberWithInt:4]
 , [NSNumber numberWithInt:1]
 , [NSNumber numberWithInt:7]
 , [NSNumber numberWithInt:10]
 , [NSNumber numberWithInt:9]
 , [NSNumber numberWithInt:8]
 , [NSNumber numberWithInt:5]
 , nil];
NSArray *sorted_array = [num_array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *a, NSNumber *b) {
return b.intValue - a.intValue; // ソート
}];
for (NSNumber *aNum in sorted_array) {
NSLog(@"sorted_num:%@", aNum);
}


上記のブロック関数内のaとbを入れ替えてやれば昇順にソートさせることもできます。

結果は以下のようになります。


sorted_num:10
sorted_num:9
sorted_num:8
sorted_num:7
sorted_num:5
sorted_num:4
sorted_num:3
sorted_num:2
sorted_num:1
sorted_num:0




文字を降順にソートする場合


NSArray *str_array = [NSArray arrayWithObjects:@"A", @"E", @"B", @"Z", @"C", @"F", @"D", nil];
sorted_array = [str_array sortedArrayUsingComparator:^NSComparisonResult(NSString *a, NSString *b) {
return [b compare:a]; // ソート
}];
for (NSString *str in sorted_array) {
NSLog(@"sorted_str:%@", str);
}


上記のブロック関数内のaとbを入れ替えてやれば昇順にソートさせることもできます。

結果は以下のようになります。


sorted_str:Z
sorted_str:F
sorted_str:E
sorted_str:D
sorted_str:C
sorted_str:B
sorted_str:A



他にもsortedArrayUsingFunctionやsortedArrayUsingSelector等あります。


0 件のコメント:

コメントを投稿