使用NSSortDescriptor对数组进行排序

时间:2013-03-21 06:26:15

标签: objective-c nsarray nssortdescriptor

我有一个A类对象的数组,让它成为detailsArray。

A类有日期,名称为属性。

任何人都可以提出一个基于日期对这个数组进行排序的好方法吗?

如何使用NSSortDescriptor对此数组进行排序?我知道使用NSSortDescriptor ...

排序字典数组

非常感谢任何帮助......

4 个答案:

答案 0 :(得分:14)

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
NSArray *sortedArray = [detailsArray sortedArrayUsingDescriptors:@[sortDescriptor]];

答案 1 :(得分:5)

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO];
NSArray *descriptors = [NSArray arrayWithObject: descriptor];

NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors];

答案 2 :(得分:3)

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"date"
                                              ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [yourArray sortedArrayUsingDescriptors:sortDescriptors];

或者你也可以使用一个块

NSArray *sortedArray;
sortedArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(A *a, A *b) {
    NSDate *first = a.date;
    NSDate *second = b.date;
    return [first compare:second];
}];

答案 3 :(得分:1)

您需要通过类名提供密钥转发,例如

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"ClassA.date" ascending:YES];
在提出任何问题之前,

执行谷歌查询您的查询,请参阅Google抓取工具result.