【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];
以上です。