Сортировать NSArray's int, содержащийся в массиве
Вопрос
У меня есть массив, давайте назовем его «массивом», и внутри массива у меня есть такие объекты, как это:
"0 Вот объект"
"4 Вот еще один объект"
"2 Давайте поставим 2 тоже!"
"1 Какого черта, вот еще!"
"3 Давайте поместим это прямо здесь"
Я хотел бы сортировать массивы по этому номеру, так что это превратится в это:
"0 Вот объект"
"1 Какого черта, вот еще!"
"2 Давайте поставим 2 тоже!"
"3 Давайте поместим это прямо здесь"
"4 Вот еще один объект"
Решение
Вы можете использовать NSArray's
SortedArrayusingFunction: контекст: Метод, чтобы сортировать их для вас. Этот метод принимает функцию, которую можно использовать для сравнения двух элементов в массиве.
#import <Foundation/Foundation.h>
NSInteger firstNumSort(id str1, id str2, void *context) {
int num1 = [str1 integerValue];
int num2 = [str2 integerValue];
if (num1 < num2)
return NSOrderedAscending;
else if (num1 > num2)
return NSOrderedDescending;
return NSOrderedSame;
}
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *array = [NSArray arrayWithObjects:@"0 Here is an object",
@"4 Here's another object",
@"25 Let's put 2 here too!",
@"1 What the heck, here's another!",
@"3 Let's put this one right here",
nil];
NSLog(@"Sorted: %@", [array sortedArrayUsingFunction:firstNumSort context:NULL]);
[pool drain];
return 0;
}
Другие советы
Использовать sortedArrayUsingFunction:
или же sortedArrayUsingComparator:
, и передайте функцию или блок, который отправляет compare:options:
к одной из строк, используя NSNumericSearch
вариант.