按NSDate属性对对象数组进行排序

时间:2012-10-16 11:09:03

标签: objective-c nsmutablearray nsdate sorting

  

可能重复:
  How to sort an NSMutableArray with custom objects in it?

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

我知道可以在日期数组上使用[mutableArray sortUsingSelector:@selector(compare:)];,但是如何通过访问数组中每个元素的NSDate属性,按最早的日期将对象排序到最新日期来做到这一点?

5 个答案:

答案 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:]的方法。它需要一个块,您可以在其中实现您认为适合对象的任何比较。