2013-12-17 2 views
-2

Я пытаюсь сортировать массив в порядке убывания, можно сортировать массив в порядке возрастания, Вот мой код для сортировки в порядке возрастания,Как отсортировать массив в порядке убывания в iPhone

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"year" ascending:NO]; 
NSArray * descriptors = [NSArray arrayWithObjects:sortDescriptor, nil]; 
sortedArray = [array sortedArrayUsingDescriptors:descriptors]; 

dictionaryWithSortedYears = [[NSMutableDictionary alloc] init]; 
NSString *tempDateKey = nil; 

for (TreeXmlDetails *list in sortedArray) 
{ 
    id obj = [dictionaryWithSortedYears objectForKey:list.year]; 

    if(!obj) 
    { 
     if(tempDateKey == nil) 
     { 
      arrayFromList = [[NSMutableArray alloc] init]; 
      tempDateKey = list.year; 
     } 
    } 

    if([list.year isEqualToString:tempDateKey]) 
     [arrayFromList addObject:list]; 
    else 
    { 
     [dictionaryWithSortedYears setObject:arrayFromList forKey:tempDateKey]; 
     tempDateKey = nil; 
     arrayFromList = nil; 
     arrayFromList = [[NSMutableArray alloc] init]; 
     tempDateKey = list.year; 
     [arrayFromList addObject:list]; 
    } 
} 

[dictionaryWithSortedYears setObject:arrayFromList forKey:tempDateKey]; 

NSArray *arr = [dictionaryWithSortedYears allKeys]; 

sortedKeys = [[NSArray alloc] initWithArray:[arr sortedArrayUsingSelector:@selector(compare:)]]; 

Но , Я хочу отсортировать массив в нисходящем массиве, Пожалуйста, помогите мне. Спасибо в advnace.

ответ

0

Используйте следующее:

[yourArrayToBeSorted sortUsingComparator:^NSComparisonResult(id obj1, id obj2){ 
    return [(NSDate *)obj2 compare:(NSDate *)obj1];} ]; 
+2

Вы должны иметь «yourArrayToBeSorted» типа NSMutableArray. –

0

Из документов:

Экземпляр NSSortDescriptor описывает основу для упорядочения объектов , указав свойство использовать для сравнения объектов, метод использовать для сравнения свойств, и должно ли сравнение быть по возрастанию или по убыванию. Экземпляры NSSortDescriptor неизменяемы.

Вы построить экземпляр NSSortDescriptor путем указания ключа пути свойства для сравнения, порядок сортировки (по возрастанию или убыванию), и (по желанию) селектор, чтобы использовать для выполнения сравнения ,

Конструктор: initWithKey: по возрастанию:

Возвращает объект NSSortDescriptor инициализирована с заданным свойством ключа пути и порядок сортировки, и с селектором сравнения по умолчанию. - (ID) initWithKey: (NSString *) ключевого пути по возрастанию: (BOOL) восходящей

Параметр, который определяет порядок:

по возрастанию ДА, если приемник определяет сортировку в порядке возрастания, иначе NO.

И эти яблочные документы вам шаг за шагом о том, как сортировать массивы:

https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/SortDescriptors/Articles/Creating.html

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