NSMutableArrayのソート | 初心者がiPhoneアプリを作るブログ

初心者がiPhoneアプリを作るブログ

初心者がiPhoneアプリを作るブログです.
入門レベルですので開発初心者にも,できるだけ分かるように丁寧に説明していきます(多分).

NSMutableArrayに格納する要素は,数字であれば,NSNumber型である必要がある.
もし,NSString型の数字を格納している場合は,辞書順でソートされる.
↑blockの中でNSNumber型に変換すれば問題ないかもしれないが,試してはいない.

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"10", @"2", @"4", @"17", @"1", nil];
NSLog(@"%@", array);
// 降順ソート
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [obj2 compare:obj1];
}];
// arrayの要素が文字列の場合,辞書順でソートされる
NSLog(@"%@", array);

array = [NSMutableArray arrayWithObjects:
         [NSNumber numberWithInt:10],
         [NSNumber numberWithInt:2],
         [NSNumber numberWithInt:4],
         [NSNumber numberWithInt:17],
         [NSNumber numberWithInt:1],nil];

NSLog(
@"%@", array);
// 降順ソート
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [obj2 compare:obj1];
}];
// arrayの要素がNSNumberなので,数字の大小でソートされる
NSLog(@"%@", array);
// 昇順ソート
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [obj1 compare:obj2];
}];

NSLog(
@"%@", array);


HOMEに戻る