Как отсортировать NSArray с помощью сравнения: параметры - PullRequest
6 голосов
/ 09 января 2010

У меня есть NSArray, содержащий числа в качестве объектов NSString.то есть.

[array addObject:[NSString stringWithFormat:@"%d", 100]];

Как отсортировать массив численно?Могу ли я использовать compare:options и указать NSNumericSearch как NSStringCompareOptions?Пожалуйста, дайте мне пример / пример кода.

Ответы [ 2 ]

16 голосов
/ 09 января 2010

Вы можете использовать пример кода, данный для метода sortedArrayUsingFunction:context:, который также должен работать нормально для строк NSStrings, так как они также имеют метод intValue.

// 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];
6 голосов
/ 09 января 2010

Поскольку ваши объекты являются числами, вместо использования объектов NSString вы можете использовать объекты NSNumber (легко превращаемые в строки с помощью свойства stringValue) и сортировать массив с помощью sortedArrayUsingDescriptors: .

Например:

NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES];
NSArray *sorters = [[NSArray alloc] initWithObjects:sorter, nil];
[sorter release];
NSArray *sortedArray = [anArray sortedArrayUsingDescriptors:sorters];
[sorters release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...