sortedArrayUsingFunction:context:hint:
ヒントを利用して配列内の要素を比較して昇順にソートします
-(NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))compare context:(void *)context hint:(NSData *)hint
解説
ヒントを利用して配列内の要素を比較して昇順にソートします。
配列内の要素を関数で比較して昇順にソートしして、新しい配列を返します。
返される新しい配列には、参照情報が入っていて、元の要素がコピーされている訳ではありません。各要素にはretainメッセ−ジが送信されます。
比較関数は
NSInteger intSort(id val1, id val2, void *context)
のような形式で、2つの要素を比較して最初の要素<次の要素の時はNSOrderedAscendingを、最初の要素>次の要素の時はNSOrderedDescendingを、同じ時はNSOrderedSameを返します。
ヒントはsortedArrayHintを使って取得します。既にソートが行われていることがわかっている場合にはsortedArrayUsingFunction:context:よりも早くソートを行うことができます。
返り値
( NSArray * )
配列(NSArrayまたはそのサブクラス)
引数
( NSInteger (*)(id, id, void *) )compare
( int (*)(id, id, void *) )compare
比較関数
( void * )context
追加情報
( NSData * )hint
ソートヒントのデータ
フレームワーク
Foundation
クラス
NSArray
Instance Methods
使用可能
10.0
iOS2.0
参照
例文
#import "MyObject.h" @implementation MyObject - (IBAction)myAction:(id)sender { NSArray *ar =[[NSArray alloc] initWithObjects:@"123",@"12",@"1234",@"12345",nil] ; NSArray *retArr =[NSArray alloc]; NSData *hint = [ar sortedArrayHint]; retArr = [ar sortedArrayUsingFunction:intSort context:NULL hint:hint]; NSLog([retArr description]); } int intSort(id val1, id val2, void *context) { int iVal1 = [val1 intValue]; int iVal2 = [val2 intValue]; if (iVal1 < iVal2) return NSOrderedAscending; else if (iVal1 > iVal2) return NSOrderedDescending; else return NSOrderedSame; } @end