Jorge Israel Peña Jorge Israel Peña - 4 months ago 12
Objective-C Question

Sort an NSArray in Descending Order

Hey guys, I have an

NSArray
of
NSNumber
objects that I have successfully sorted in ascending order using the following:

[myArray sortedArrayUsingSelector:@selector(compare:)]


However, I need to sort this in descending order. I take it that
compare:
only sorts in ascending order. While I can go about reversing the
NSArray
, I am curious as to whether or not there is a more simpler or more effective way of going about doing this.

Thanks!

EDIT: I found this question which provides a simple way to reverse iterate an
NSArray
:

for (id someObject in [myArray reverseObjectEnumerator])


This works fine, I guess it's a nice simple solution, but I'm curious as to whether or not there is a way to specify sorting in descending order.

Answer

Use a sort descriptor

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" 
                                                            ascending: NO];
return [myArray sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
Comments