Как можно отсортировать NSMutableArray NSMutableArrays, содержащий NSStrings? - PullRequest
3 голосов
/ 09 июля 2009

Есть ли простой способ сортировки NSMutableArray из NSMutableArrays, содержащего строки NSStrings?

Я уверен, что для этого должен быть простой способ, но я не могу его найти.

Чтобы уточнить, я хочу отсортировать первый массив в алфавитном порядке по NSString по индексу 3 подмассива.

Ответы [ 4 ]

3 голосов
/ 26 октября 2010

Если ваш NSMutableArray содержит только объекты типа NSString, просто выполните:

[myMutableArray sortUsingSelector:@selector(compare:)];
3 голосов
/ 02 февраля 2011

Не видел, чтобы кто-нибудь на самом деле отвечал на это, кроме как "использовать эту функцию, выяснить это". Итак, вот некоторый фактический код, который вы можете использовать.

Поместите эту категорию в конец вашего файла .h (или куда угодно и импортируйте .h туда, где вам нужно отсортировать)

@interface NSString (SortCompare)

-(NSInteger)stringCompare:(NSString *)str2;

@end

Поместите это в файл .m (или .m импортируемого файла .h)

@implementation NSString (SortCompare)

-(NSInteger) stringCompare:(NSString *)str2
{
    return [(NSString *)self localizedCaseInsensitiveCompare:str2];
}

@end

Теперь используйте сортировку, вызывая sortUsingSelector: для массива
NSMutableArray:

[myArray sortUsingSelector:@selector(stringCompare:)];

NSArray:

[myArray sortedArrayUsingSelector:@selector(stringCompare:)];
2 голосов
/ 09 июля 2009

Как уже упоминалось, NSArray не имеет селектора compare:, который позволяет ему сортировать себя, поэтому вам придется определить его самостоятельно. Я бы создал категорию в NSArray с методом compare:(NSArray *)otherArray (или чем-то, что лучше описывает, что он делает) и использовал бы это с sortUsingSelector:.

В зависимости от ваших потребностей, вы можете собрать все свои строки в большой массив, когда вам нужно их отсортировать, и использовать вместо этого. Это может быть немного меньше кода для записи.

0 голосов
/ 07 января 2013

Вы можете сортировать по ключу с помощью:

NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"key" ascending:NO];
[yourArray sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...