2011-06-30 22 views
0

並べ替えの問題に直面しています。このシナリオは次のように説明されています:私はクラスを持っていると仮定し、それは4つの属性(firstName、lastName、Address、salary)を持っていると仮定しています。オブジェクトを作成していて、そうです。したがって、配列の各インデックスには、1つのオブジェクト(つまり、4つの属性のコレクション)があります。今私は給与に基づいてその配列を並べ替えることができますこの問題に関して誰でも助けてくれてありがたいです、ありがとうございます。、カスタムクラスオブジェクトの配列の並べ替え

+0

タイトルが混乱している、私はこれがクラスの配列に関するものだと思った。 –

答えて

0

NSArrayのドキュメントを参照してください。それはいくつかのソート方法を持っています。単語「sort」を検索すると、「em」が見つかります。 (ブロックベースAPIまたは関数ベースAPIが必要です)。

0

使用この

NSSortDescriptor *sorter = [[[NSSortDescriptor alloc] initWithKey:@"salary" ascending:YES] autorelease]; 
NSArray *sortDescriptors = [NSArray arrayWithObject: sorter]; 
    [yorArrary sortUsingDescriptors:sortDescriptors]; 
+0

@Ishu、Maulik: 私はそのように実装していますが、私のプログラムが例外を私に与えて "スレッド1:プログラムは、信号受信:SIGABRTを" と NSSortDescriptor *ソーター= [[[NSSortDescriptorのalloc] initWithKey墜落している:給与 "@を"昇順:はい" autorelease]; NSArray * sortDescriptors = [NSArray arrayWithObject:ソーター]; [appDelegate.ContactArray sortUsingDescriptors:sortDescriptors]; この動作についての任意のアイデア?? –

+0

あなたが持っている例外を示すログメッセージを与えます。 – Ishu

+0

実際にはIshuは正確に何が原因でエラーが発生したのか正確に知ることができません。この行に到達するとすぐに [appDelegate.ContactArray sortUsingDescriptors:sortDescriptors]; プログラムがクラッシュし、このログメッセージを受信しました。「NSException」のインスタンスをスローした後に終了しました。 –

0

あなたがオブジェクトのための比較・メソッドを実装する次のいずれか

- (NSComparisonResult)compare:(Person *)otherObject { 
return [self.birthDate compare:otherObject.birthDate]; 
} 

NSArray *sortedArray; 
sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)]; 

または通常よりよい:(NSSortDescriptorのセレクタをデフォルトのソートが:)

を比較しています
NSSortDescriptor *sortDescriptor; 
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"birthDate" 
              ascending:YES] autorelease]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
NSArray *sortedArray; 
sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];