ios - 对数组进行排序,其中包含日期,月份

标签 ios objective-c arrays sorting

我想根据日期和月份值对数组进行排序。我正在使用此代码

 NSSortDescriptor *descriptor=[[NSSortDescriptor alloc]initWithKey:@"self" ascending:YES];
    NSArray *descriptors=[NSArray arrayWithObject:descriptor];
    revereseorder=[dateAarray sortedArrayUsingDescriptors:descriptors];
    NSLog(@"date order %@",revereseorder);

我得到如下响应:
 date order (
    "01-11-2014",
    "01-12-2014",
    "02-11-2014",
    "02-12-2014",
    "03-11-2014",
    "03-12-2014",
    "04-11-2014",
    "04-12-2014",
    "05-11-2014",
    "05-12-2014",
    "06-11-2014",
    "06-12-2014",
    "07-11-2014",
    "07-12-2014",
    "08-11-2014",
    "08-12-2014",
    "09-11-2014",
    "09-12-2014",
    "10-11-2014",
    "10-12-2014",
    "11-11-2014",
    "11-12-2014",
    "12-11-2014",
    "12-12-2014",
    "13-11-2014",
    "13-12-2014",
    "14-11-2014",
    "15-11-2014",
    "16-11-2014",
    "17-11-2014",
    "18-11-2014",
    "19-11-2014",
    "20-11-2014"

)

但是我需要根据当月的降序显示响应的当前日期。请问我如何解决?谢谢@

最佳答案

如果要对字符串进行正确排序,则需要将其转换为实际的NSDate对象。

您可以使用比较器功能像这样对它们进行排序...

NSArray *dateStringArray = //your array...

NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"dd-MM-yyyy";

NSArray *sortedArray = [dateStringArray sortedArrayUsingComparator:^(NSString *string1, NSString *string2) {
    NSDate *date1 = [dateFormatter dateFromString:string1];
    NSDate *date2 = [dateFormatter dateFromString:string2];

    return [date1 compare:date2];
}];

如果要降序,只需将比较器的最后一行更改为...
return [date2 compare:date1];

关于ios - 对数组进行排序,其中包含日期,月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483834/

相关文章:

ios - 如何在 TableView Cell 中制作跑马灯文字

iphone - iOS 4.0/4.2 如何获取当前位置的经纬度?

javascript - 通过其他数组的索引过滤数组对象

ios - ios 10 中的 AVCapturePhotoSettings 错误?

ios - 如何更新 parse.com 中的数据浏览器 channel ?

iOS Xcode 使背景图像缩放以填充

arrays - 编写输入值为数组的 PostgreSQL 聚合函数

objective-c - 如何在 Mac 命令行应用程序中获取自定义 url?

iphone - 替换数组中的字符串

jquery - 水平(在表格中)而不是垂直列出数据