INDEX>Foundation>NSArray>sortedArrayUsingSelector:
配列内の要素を比較して、昇順にソートされた配列を返します
編集時バージョン OS X 10.8,iOS6.1
【精米】ホクレン 北海道産 無洗米 ゆめぴりか 5kg 平成24年産
- 出版社/メーカー: ホクレン農業協同組合連合会
- メディア: 食品&飲料
- 購入: 3人 クリック: 6回
- この商品を含むブログ (2件) を見る
-(NSArray *)sortedArrayUsingSelector:(SEL)comparator
解説
配列内の要素を比較して、昇順にソートされた配列を返します。
NSStringの-caseInsensitiveCompareや-compareなどNSComparisonResultを返すメソッドが使えます。
比較関数メソッドは2つの要素を比較してレシーバが引数よりも小さい時はNSOrderedAscendingを、大きい時はNSOrderedDescendingを、同じ時はNSOrderedSameを返すようにします。
文字列の比較の場合、NSStringでcompare:が定義されているので以下の要領でソートした新しい配列を得ることができます。
NSArray *newArray = [theArray sortedArrayUsingSelector:@selector(compare:)];
返り値
( NSArray * )
配列(NSArrayまたはそのサブクラス)
引数
( SEL )comparator
比較するためのメソッド
フレームワーク
Foundation
クラス
NSArray
Instance Methods
使用可能
10.0
iOS2.0
例文
#pragma mark sortedArrayUsingSelector: -(void)method021 { NSArray *ar =[[NSArray alloc] initWithObjects:@"aaa",@"cccc",@"bbb",@"a",nil] ; NSArray *retArr = [NSArray alloc] ; //普通に retArr = [ar sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"021 compare: %@",[retArr description]); // 021 compare: (a,aaa,bbb,cccc) //NSString+Extractとしてカテゴリを作っている。comparePlus:というメソッドを作成済み。 //これは単に文字の長さが長いかを比べるメソッド retArr = [ar sortedArrayUsingSelector:@selector(compareLength:)]; NSLog(@"021 %@",[retArr description]); //=>021 (cccc,aaa,bbb,a) }
比較メソッドはそれぞれの要素に対して送られる。上記の場合はNSStringなので、NSStringのカテゴリとしてcompareLength:という比較のためのメソッドを作った。
自分と他の文字の長さを比較してNSComparisonResultを返すだけのもの。
【NSString+Extract.h】
#import <Foundation/Foundation.h> @interface NSString (Extract) - (NSComparisonResult)compareLength:(NSString *)otherString; @end
【NSString+Extract.m】
#import "NSString+Extract.h" @implementation NSString (Extract) //文字列の長さか長いかどうかの比較 - (NSComparisonResult)compareLength:(NSString *)otherString { if ([self length] > [otherString length]) { return NSOrderedAscending; } else if ([self length] < [otherString length]) { return NSOrderedDescending; } return NSOrderedSame; } @end