how to sort an NSArray using compare:options

compare, iphone, nsarray, sorting

Solution

You can use the example code given for the `sortedArrayUsingFunction:context:` method which should work fine for NSStrings too as they also have the `intValue` method.

// Place this functions somewhere above @implementation
static NSInteger intSort(id num1, id num2, void *context)
{
    int v1 = [num1 intValue];
    int v2 = [num2 intValue];
    if (v1 < v2)
        return NSOrderedAscending;
    else if (v1 > v2)
        return NSOrderedDescending;
    else
        return NSOrderedSame;
}

// And used like this
NSArray *sortedArray; 
sortedArray = [anArray sortedArrayUsingFunction:intSort context:NULL];

Problem

I have an NSArray containing numbers as NSString objects. ie. ``` [array addObject:[NSString stringWithFormat:@"%d", 100]]; ``` How do I sort the array numerically? Can I use `compare:options` and specify `NSNumericSearch` as `NSStringCompareOptions`? Please give me an example/sample code.

Original source