关于objective c:按NSDate属性对对象数组进行排序

Sort array of objects by their NSDate property

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to sort an NSMutableArray with custom objects in it?

如何通过访问对象的nsdate属性对对象数组进行排序?

我知道可以在日期数组中使用[mutableArray sortUsingSelector:@selector(compare:)];,但是如何通过访问数组中每个元素的nsdate属性,按最早日期到最晚日期对对象进行排序来实现呢?


感谢所有的答案,我遇到了这个解决我问题的答案。请查看nsgod的答案。

这是感谢用户的代码:nsgod:

1
2
3
4
5
6
NSSortDescriptor *dateDescriptor = [NSSortDescriptor
                                 sortDescriptorWithKey:@"startDateTime"
                                             ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
     sortedArrayUsingDescriptors:sortDescriptors];

1
2
    NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
    [mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];


你可以使用:

1
2
3
4
5
   NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
        NSDate *first = [(Person*)a birthDate];
        NSDate *second = [(Person*)b birthDate];
        return [first compare:second];
    }];

或查看此链接


有一个方法叫做-[NSArray sortedArrayUsingComparator:]。它需要一个块,您可以在其中实现您认为适合于对象的任何比较。


可以重写自定义类中的Compare方法,以便它比较自定义类的两个对象,并根据对象上的日期返回适当的nsComparisonResult。

Eg:< BR>

1
2
3
4
-(NSComparisonResult)compare:(YourClass*)otherObject
{
   return [self.date compare:otherObject.date];
}