tsuyushiga's blog

備忘録です。

【Objective-C】NSMutableArrayをソート

NSMutableArrayを並べ替えるときのメモです。

1. 文字列をキーにソートする場合

NSMutableArray* hogeMutableArray = /*データを設定*/;
NSArray* sortedArr = [NSArray array];
sortedArr = [[hogeMutableArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    HogeData* hoge1 = obj1;
    HogeData* hoge2 = obj2;
    NSStringCompareOptions compareOptions = (NSCaseInsensitiveSearch);
    return [hoge1.title compare:hoge2.title options:compareOptions];
    }] copy];
NSMutableArray* sorted = [sortedArr mutableCopy];

HogeDataオブジェクトがtitleプロパティを持っている想定です。
ここでは昇順で並べ替えをしています。降順の場合は、

[hoge1.title compare:hoge2.title options:compareOptions];

[hoge2.title compare:hoge1.title options:compareOptions];

にすればOKです。

2.integerをキーにソートする場合

NSMutableArray* hogeMutableArray = /*データを設定*/;
NSArray* sortedArr = [NSArray array];
sortedArr = [[hogeMutableArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    HogeData* hoge1 = obj1;
    HogeData* hoge2 = obj2;
    if ( hoge1.orderbyRemoved > hoge2.orderbyRemoved ) {
        return (NSComparisonResult)NSOrderedAscending;
    } else if ( hoge1.orderbyRemoved < hoge2.orderbyRemoved ) {
        return (NSComparisonResult)NSOrderedDescending;
    } else {
        return (NSComparisonResult)NSOrderedSame;
    }
    }] copy];
NSMutableArray* sorted = [sortedArr mutableCopy];

以上です。