可能重复:
How to sort an NSMutableArray with custom objects in it?
如何通过访问NSDate属性对对象数组进行排序?
我知道可以在日期数组上使用[mutableArray sortUsingSelector:@selector(compare:)];
,但是如何通过访问数组中每个元素的NSDate属性,按最早的日期将对象排序到最新日期来做到这一点?
答案 0 :(得分:34)
感谢所有答案,我遇到了解决问题的答案。Check NSGod's answer
以下是感谢用户的代码:NSGod:
NSSortDescriptor *dateDescriptor = [NSSortDescriptor
sortDescriptorWithKey:@"startDateTime"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
sortedArrayUsingDescriptors:sortDescriptors];
答案 1 :(得分:13)
NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
答案 2 :(得分:10)
您可以使用:
NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDate *first = [(Person*)a birthDate];
NSDate *second = [(Person*)b birthDate];
return [first compare:second];
}];
或者看到这个link
答案 3 :(得分:1)
您可以覆盖自定义类中的compare方法,以便比较自定义类的两个对象,并根据对象上的日期返回相应的NSComparisonResult。
例如:
-(NSComparisonResult)compare:(YourClass*)otherObject
{
return [self.date compare:otherObject.date];
}
答案 4 :(得分:1)
有一种名为-[NSArray sortedArrayUsingComparator:]
的方法。它需要一个块,您可以在其中实现您认为适合对象的任何比较。