2015-02-13 2 views
0

У меня есть массив и я перечислял данные в нем, как показано ниже.Как отсортировать NSArray в алфавитном порядке?

[directoryContent sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] 

но вывод,

<__NSArrayI 0x16739870>(
bedsheet0.jpg, 
bedsheet1.jpg, 
bedsheet10.jpg, 
bedsheet11.jpg, 
bedsheet2.jpg, 
bedsheet3.jpg, 
bedsheet4.jpg, 
bedsheet5.jpg, 
bedsheet6.jpg, 
bedsheet7.jpg, 
bedsheet8.jpg, 
bedsheet9.jpg 

)

Но мне нужно отсортировать этот список, как следующий,

<__NSArrayI 0x16739870>(
bedsheet0.jpg, 
bedsheet1.jpg, 
bedsheet2.jpg, 
bedsheet3.jpg, 
bedsheet4.jpg, 
bedsheet5.jpg, 
bedsheet6.jpg, 
bedsheet7.jpg, 
bedsheet8.jpg, 
bedsheet9.jpg 
bedsheet10.jpg, 
bedsheet11.jpg, 

)

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

Спасибо заранее!

+0

Его можно дублировать. Но как я могу найти его по теме «У меня NSArray на NSString, но некоторые строки - это только числа. Как я могу отсортировать численно правильно? ' – codebot

ответ

4

Использование NSNumericSearch для поиска числового значения в строку, как это: -

NSArray * products = [[NSArray alloc] initWithObjects:@"Product1",@"Product10",@"Product2",@"Product3",@"Product4",@"Product5",@"Product6",@"Product7",@"Product8",@"Product9", nil]; 

products = [products sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch]; 
}]; 

NSLog(@"products : %@", products); 
0

Вы можете сделать это с помощью сортировки дескриптора.

NSArray * unsortedArray = [NSArray arrayWithObjects: @ "12", @ "4", @ "89", @ "5", @ "2", @ "10", @ "1", ноль]; NSArray * sortedArray = [unsortedArray sortedArrayUsingComparator:^(NSString * str1, NSString * str2) { return [str1 compare: str2 options: NSNumericSearch]; }];

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