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

この数値の配列を降順で並べ替える方法を知りたいですか?

4

3 に答える 3

27

ブロックをコンパレータとして渡すことができるメソッドを使用し、オブジェクトを反転するコンパレータを実装します(NSOrderedDescendingに対してNSOrderedAscendingを返し、その逆も同様です)。

... また:

NSArray *reversed = [[[myArray sortedArrayUsingSelector:@selector(compare:)] reverseObjectEnumerator] allObjects];

ごめん。最も重要な部分を削除しました。

于 2012-11-07T16:31:57.773 に答える
7

使用するNSSortDescriptor

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO];
NSArray *temp = [myArray sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
于 2012-11-07T16:33:41.887 に答える
0

sortedArrayUsingFunction:配列の並べ替え方法を完全に制御できる方法を使用するのが好きです。次に、結果を逆にすると、返されたはずの負の値が返されます。

NSInteger myCompare (id obj1, id obj2, void *context) {
    int retval = [obj1 compare:obj2 options:NSNumericSearch];
    retval = -retval; // now it's sorted reverse
    return retval;
}

...

NSArray *arr = @[@"foo20zz", @"foo7zz", @"foo100zz"];
NSArray *sarr = [arr sortedArrayUsingFunction:myCompare context:NULL];
NSLog(@"sarr is %@", sarr);
于 2021-03-01T03:53:57.893 に答える