2012-01-10 2 views
-1

У меня есть массив с несколькими именами (String).Список содержимого массива в алфавитном порядке

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

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

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

EDIT

Если мое заявление массива;

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

как я могу сортировать это?

+1

Попробуйте прочитать документацию перед тем как задать вопрос. –

+1

Ваше объявление массива - неверный код. Отправьте свой реальный код и покажите, что вы пытались решить самостоятельно. –

ответ

2

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

Документов для 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 
) 
+0

+1 Самый тщательный из четырех одновременных ответов. – PengOne

2

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

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

Конечно, некоторые люди могли бы спросить, почему вы не искать Apple docs для «сортировки массива», прежде чем задать вопрос. Не меня. Я счастлив взять очки!

1

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

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

Этот пример будет чувствительно к регистру - но вы могли бы сделать дело чувствительную, а также.

+0

Я отредактировал мой вопрос, пожалуйста, посмотрите. Как изменить код на отредактированную часть моего вопроса – sharon

1

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

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

Смежные вопросы