Ответ 1
Существуют разные методы сортировки для NSArray, потому что могут быть разные способы сортировки. NSSortDescriptors - это общий способ, который дает вам много возможностей в отношении того, какие ключи использовать при сортировке, какие селектора вы хотите использовать на этих клавишах, и общий порядок использования и т.д. Или вы можете использовать функции или блоки сравнения вместо этого, если ваш случай требует, чтобы это было удобнее для вашего конкретного случая.
Чтобы ответить на ваш первый вопрос, если вы хотите, чтобы сегодня было первым, а затем вчера, да, это, конечно, убывающий порядок.
Чтобы отсортировать несколько дат в порядке убывания, вы можете просто сделать это: (предполагая NSArray, полный NSDates, называемый dateArray):
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO];
NSArray *descriptors = [NSArray arrayWithObject: descriptor];
[descriptor release];
NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors];
Или, если вы создаете для iOS 4+ или Snow Leopard +, вы можете сделать это:
NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator:
^(id obj1, id obj2) {
return [obj2 compare:obj1]; // note reversed comparison here
}];