NSMutableArray sortUsingFunction
Sorts the array’s elements in ascending order as defined by the comparison function compare.
- (void)sortUsingFunction:(NSInteger (*)(id, id, void *))compare context:(void *)context
Parameters of [NSMutableArray sortUsingFunction]
compare
The comparison function to use to compare two elements at a time.
The function's parameters are two objects to compare and the context parameter, context. The function should return NSOrderedAscending if the first element is smaller than the second, NSOrderedDescending if the first element is larger than the second, and NSOrderedSame if the elements are equal.
context
The context argument to pass to the compare function.
Discussion of [NSMutableArray sortUsingFunction]
This approach allows the comparison to be based on some outside parameter, such as whether character sorting is case-sensitive or case-insensitive.
NSMutableArray sortUsingFunction example.
-(void) orderByProximityFromLocation:(CLLocationCoordinate2D) coordinates
{
CLLocation* currentLocation = [[CLLocation alloc] initWithLatitude:coordinates.latitude longitude:coordinates.longitude];
[listOfPOI sortUsingFunction:compareDistance context:currentLocation];
[currentLocation release];
}
Example of [NSMutableArray sortUsingFunction].
Close analogue using NSMutableArray:
[opponentMatchDicts sortUsingFunction:compareMatchByDate context:nil];
...
static int compareMatchByDate( id m1, id m2, void *context)
{
NSDictionary *mDict1 = (NSDictionary *) m1;
NSDictionary *mDict2 = (NSDictionary *) m2;
NSDate *date1 = [mDict1 objectForKey:kMatchNSDate];
NSDate *date2 = [mDict2 objectForKey:kMatchNSDate];
int rv = [date1 compare:date2];
return rv;
}
[opponentMatchDicts sortUsingFunction:compareMatchByDate context:nil];
...
static int compareMatchByDate( id m1, id m2, void *context)
{
NSDictionary *mDict1 = (NSDictionary *) m1;
NSDictionary *mDict2 = (NSDictionary *) m2;
NSDate *date1 = [mDict1 objectForKey:kMatchNSDate];
NSDate *date2 = [mDict2 objectForKey:kMatchNSDate];
int rv = [date1 compare:date2];
return rv;
}
NSMutableArray sortUsingFunction example.
int SortPlays(id a, id b, void* context)
{
Play* p1=a;
Play* p2=b;
if (p1.score
else if (p1.score>p2.score) return NSOrderedAscending;
return NSOrderedSame;
}
...
[validPlays sortUsingFunction:SortPlays context:nil];
{
Play* p1=a;
Play* p2=b;
if (p1.score
return NSOrderedSame;
}
...
[validPlays sortUsingFunction:SortPlays context:nil];