简体   繁体   English

如何对包含NSDates的数组进行排序

[英]How to sort an array containing NSDates

Can you help me on sorting (ascending order) the array contains NSDate . 您能帮我对包含NSDate的数组进行排序(升序)吗?

NSMutableArray *tempArray = [[NSMutableArray alloc]init];

[tempArray addObject: NSDate1];
[tempArray addObject: NSDate2];
[tempArray addObject: NSDate3];
[tempArray addObject: NSDate4];

由于NSDate响应compare ,并且默认排序顺序是递增的,因此最简单的方法是

[tempArray sortUsingSelector:@selector(compare:)];

Use below code: 使用以下代码:

  [your array sortUsingComparator:
  ^NSComparisonResult(id obj1, id obj2){

         obj1 *o1 = (obj1*)obj1;
         obj2 *o2 = (obj2*)obj2;
         if (o1.personAge > 02.personAge) {
            return (NSComparisonResult)NSOrderedDescending;
        }


        return (NSComparisonResult)NSOrderedSame;
}

]; ]。

NSSortDescriptor *dateSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"self.dueDate" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd/MM/yyyy"];
    NSDate *date1 = [dateFormat dateFromString:obj1];
    NSDate *date2 = [dateFormat dateFromString:obj2];

    return [date1 compare:date2];
}];

Best way to do this,use sort descriptor. 最好的方法是使用排序描述符。

 NSSortDescriptor *dateSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"self.dueDate" ascending:YES comparator:^NSComparisonResult(NSDate *dateObject1, NSDate *dateObject2) {

return [dateObject1 compare:dateObject2];
}];
[array1 sortUsingComparator: (NSComparator)^(NSString *key1, NSString *key2)
 {        
     return [key2 compare: key1];
 }
 ];

If you want array in ascending or descending order just change 如果要按升序或降序排列数组,只需更改

compare 相比

return [key1 compare: key2];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM