我在数组中有一个日期,如下所示,我想对它进行排序。
NSMutableArray *arrDates =[[NSMutableArray alloc]init];
[arrDates addObject:@"24/01/2010"];
[arrDates addObject:@"15/05/2014"];
[arrDates addObject:@"04/03/2011"];
[arrDates addObject:@"30/05/2013"];
[arrDates addObject:@"11/10/2012"];
我尝试使用下面的代码,但是我没有得到我应该在这里完全按键传递的内容。
NSSortDescriptor *sortDis = [[NSSortDescriptor alloc] initWithKey:????? ascending:TRUE];
[arr sortUsingDescriptors:[NSArray arrayWithObject:sortDis]];
我通过自我,但仅根据日期(日期)进行排序。
我想显示结果如下
24/01/2010
04/03/2011
11/10/2012
30/05/2013
15/05/2014
我也试过下面的行
[arrDates sortUsingSelector:@selector(compare:)];
但没用。请帮忙。
答案 0 :(得分:7)
使用适当的类型存储您的数据,日期为NSDate
,然后您可以使用:
NSArray *sorted = [array sortedArrayUsingComparator:^NSComparisonResult(NSDate *date1, NSDate *date2) {
return [date1 compare:date2];
}];
假设array
是NSArray
个NSDate
个对象。
答案 1 :(得分:4)
尝试
NSMutableArray *arrDates =[[NSMutableArray alloc]init];
[arrDates addObject:@"24/01/2010"];
[arrDates addObject:@"15/05/2014"];
[arrDates addObject:@"04/03/2011"];
[arrDates addObject:@"30/05/2013"];
[arrDates addObject:@"11/10/2012"];
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
[arrDates sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSDate *date1 = [dateFormatter dateFromString:obj1];
NSDate *date2 = [dateFormatter dateFromString:obj2];
return [date1 compare:date2];
}];
答案 2 :(得分:1)
您需要将它们添加为NSDate对象,为此使用它:
NSString *dateString = @"01/02/2010";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];
[dateFormatter release];
一旦数组包含NSDates,它将被正确排序
或者,如果您不想存储NSDates,在进行比较时,将它们转换为日期并进行比较
答案 3 :(得分:0)
将日期作为 NSDate 对象存储在 NS(可变)数组中,然后使用 [NSArray sortedArrayUsingSelector:或 [NSMutableArray sortUsingSelector:并传递 @selector(compare :) 作为参数。 - [NSDate compare:] 方法将按升序为您排序日期。