1

我在表格中有一个列,dd/MM/yy其中条目格式的日期在 中NSString,现在单击列标题后,即排序描述符图标列应该根据排序描述符进行升序或降序排序。目前它按数字顺序排序,例如

  1. 2013 年 10 月 23 日
  2. 2009 年 11 月 4 日
  3. 06 年 5 月 2 日

但我希望列应该按日期排序:

  1. 06 年 5 月 2 日
  2. 2009 年 11 月 4 日
  3. 2013 年 10 月 23 日

我写了以下代码

- (void)tableView:(NSTableView *)tableView sortDescriptorsDidChange:(NSArray *)oldDescriptors
{
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
    [fifiMainList sortUsingComparator:^NSComparisonResult(id a, id b) {

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat: @"yyyy MM dd"];

    NSString *date1String = [a valueForKey:@"date"];
    NSString *date2String = [b valueForKey:@"date"];

    NSDate *date1 = [dateFormat dateFromString:date1String];
    NSDate *date2 = [dateFormat dateFromString:date2String];
    return [date1 compare:date2];
    }];
}

但这对我不起作用。

我需要在sortDescriptorsDidChange其他地方或其他地方编写排序代码吗?而且我的项目中也需要sortDescriptorsDidChange方法。

4

1 回答 1

0

试试这样:-

NSArray *yourArr=[NSArray arrayWithObjects:@"10/23/13",@"11/4/09",@"5/2/06",nil];
NSDateFormatter *format=[[[NSDateFormatter alloc]init]autorelease];
[format setDateFormat:@"dd/mm/yy"];
NSMutableArray *arr2=[NSMutableArray array];
for (NSString *str in yourArr)
{
    [arr2 addObject:[format dateFromString:str]];
}
    NSLog(@"Before=%@",arr2);
[self.arr sortUsingSelector:@selector(compare:)];
    NSLog(@"After=%@",self.arr);
于 2013-10-31T07:29:30.263 回答