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

jar*_*ryd 28 sorting objective-c nsdate nsmutablearray

可能重复:
如何使用自定义对象对NSMutableArray进行排序?

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

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

jar*_*ryd 34

感谢所有答案,我遇到了解决问题的答案.检查NSGod的答案

以下是感谢用户的代码:NSGod:

NSSortDescriptor *dateDescriptor = [NSSortDescriptor
                                 sortDescriptorWithKey:@"startDateTime" 
                                             ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
     sortedArrayUsingDescriptors:sortDescriptors];
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas 14

    NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
    [mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
Run Code Online (Sandbox Code Playgroud)

  • 为了使它更简洁,你可以像这样编写第二行:`[mutableArray sortUsingDescriptors:@ [sortByDate]];` (2认同)
  • 为了澄清一点(如果需要),`sortUsingDescriptors:`返回已排序的`NSArray`.您可能希望将其分配给另一个变量并从[Helium3的答案](http://stackoverflow.com/a/12913805/2192331)上完成. (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];
    }];
Run Code Online (Sandbox Code Playgroud)

或者看到这个链接