NSArray
インデックスで降順で並べ替えたい。
配列値を並べ替える方法インデックスで並べ替える方法...
NSArray* arr = [[NSArray alloc] initWithObjects:@"First",@"Second",@"Third",@"Fifth",@"Last",nil];
結果は次のようになります
- 最後
- 5番目
- 第3
- 2番
- 初め
iOSで利用できる直接的な方法はありますか?
NSArray
インデックスで降順で並べ替えたい。
配列値を並べ替える方法インデックスで並べ替える方法...
NSArray* arr = [[NSArray alloc] initWithObjects:@"First",@"Second",@"Third",@"Fifth",@"Last",nil];
結果は次のようになります
iOSで利用できる直接的な方法はありますか?
配列を逆にしたいだけなら、エレガントな方法があります。
danielpunkass によるこの回答で解決策を見つけました。
NSArray *reversedArray = [[originalArray reverseObjectEnumerator] allObjects];
NSMutableArray *array = ...;
[array sortUsingComparator: ^(id obj1, id obj2) {
_NSComparisonResult result = [obj1 compare:obj2]; // [NSString compare:]
if (result == NSOrderedAscending)
return NSOrderedDescending;
if (result == NSOrderedDescending)
return NSOrderedAscending;
return NSOrderedSame;
}];
また
NSMutableArray *array = ...;
[array sortUsingComparator: ^(id obj1, id obj2) {
_NSComparisonResult result = [obj1 compare:obj2]; // [NSString compare:]
return -result; // minus result
}];
NSArray -sortUsingComparator に関する Apple ドキュメントを参照してください。
NSObjCRuntime.h
enum _NSComparisonResult {NSOrderedAscending = -1、NSOrderedSame、NSOrderedDescending};