gpt4 book ai didi

objective-c - 按 NSDate 对 NSTableColumn 进行排序

转载 作者:行者123 更新时间:2023-12-03 17:22:22 25 4
gpt4 key购买 nike

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

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

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

  1. 2006 年 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 方法。

最佳答案

尝试这样:-

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);

关于objective-c - 按 NSDate 对 NSTableColumn 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19699324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com