Распечатка содержимого массива в алфавитном порядке - PullRequest
0 голосов
/ 10 января 2012

У меня есть массив с некоторыми именами (String) в нем.

1.) Я хочу перечислить эти имена в массиве в алфавитном порядке. 2.) Позже я добавлю еще несколько имен в этот массив, поэтому его нужно было добавить в этот массив.

Как я могу сделать это программно?

примечание: у меня нет кода для демонстрации моей работы. у меня только что создан массив.

EDIT

Если мое объявление массива:

NSArray *array = [NSArray arrayWithObjects:@"A",@"C",@"B", @"M",nil];

как мне это отсортировать?

Ответы [ 4 ]

2 голосов
/ 10 января 2012

Вы действительно должны попытаться привыкнуть к просмотру документации - как только вы ее освоите, вы можете довольно быстро разобраться в этом

Документы для NSArray дают вам точный способсортировка массива:

NSArray *array       = [NSArray arrayWithObjects:@"A", @"C", @"B", @"M", nil];
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

Теперь, учитывая, что вы хотите добавить объекты позже, вы, скорее всего, будете использовать NSMutableArray документы для NSMutableArray показать метод:

- (void)sortUsingSelector:(SEL)comparator

Поэтому вы можете использовать

NSMutableArray *myMutableArray = [NSMutableArray arrayWithObjects:@"c", @"a", @"b", nil];
[myMutableArray sortUsingSelector:@selector(caseInsensitiveCompare:)];

, который будет сортировать ваш массив на месте, что приведет к

2012-01-10 17:47:11.477 Untitled[11904:707] (
    a,
    b,
    c
)
2 голосов
/ 10 января 2012

Это будет делать то, что вам нужно:

NSArray * sortedArray = [yourArray sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)];

Конечно, некоторые люди могут спросить, почему вы не искали "1004 * Apple Docs " для "сортировки", прежде чем задавать вопрос. Не я, хотя. Я счастлив взять очки!

1 голос
/ 10 января 2012

Если вы хотите добавить позже, вы должны использовать изменяемый тип: NSArray или NSDictionary. Если массив содержит только имена, с которыми не связаны никакие другие данные, проще всего использовать NSMutableArray для их хранения.

В алфавитном порядке вы можете использовать метод NSArray sortedArrayUsingSelector: вместе с @selector(caseInsensitiveCompare:). Это сделает всю работу за вас максимально эффективно.

1 голос
/ 10 января 2012

Для этого необходимо отсортировать массив (и вам нужно будет это сделать после добавления новых значений). Это довольно просто сделать:

NSArray *sortedArray = [myArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

В этом примере регистр не учитывается, но вы также можете использовать регистр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...