【问题标题】:Sorting issue iphone sdk排序问题iphone sdk
【发布时间】:2011-09-22 15:44:43
【问题描述】:

遇到了一些问题,我整理好了,但看起来像这样,

"10/16/2011 12:00:00 AM",
    "10/16/2011 12:00:00 AM",
    "11/16/2011 12:00:00 AM",
    "11/16/2011 12:00:00 AM",
    "9/15/2011 12:00:00 AM",
    "9/15/2011 12:00:00 AM",
    "9/15/2011 12:00:00 AM"

格式为“MM/dd/yyyy”,我想按天、月、年、时间排序。我该如何实现?

这里是代码

NSSortDescriptor* nameSorter = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES];
NSMutableArray *temp = [dateStart mutableCopy];
[temp sortUsingDescriptors:[NSArray arrayWithObject:nameSorter]];
dateStart = temp;
NSLog(@"Sorted: %@",dateStart);

【问题讨论】:

  • 给我们看SSCCE怎么样?
  • 现在添加代码。谢谢。
  • 这是一个非常奇怪的排序顺序。目标是什么?
  • 我在一个数组中有上述值,我需要根据日期值对其进行排序。我使用了上面的代码。它正在工作,但我得到了如上所述的排序输出,这不是我想要的。那么有什么解决方案吗?谢谢。

标签: iphone nsdate sorting


【解决方案1】:

您可以使用NSDateFormatter将字符串转换为NSDate和Comparator进行比较,

NSArray *datesArray = @[@"10/16/2011 12:00:00 AM",
                   @"10/16/2011 12:00:00 AM",
                   @"11/16/2011 12:00:00 AM",
                   @"11/16/2011 12:00:00 AM",
                   @"9/15/2011 12:00:00 AM",
                   @"9/15/2011 12:00:00 AM",
                   @"9/15/2011 12:00:00 AM"];

NSLog(@"dates:%@", datesArray);

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy h:mm:ss a"];

NSArray *sortedDatesArray = [datesArray sortedArrayUsingComparator:^(id obj1, id obj2){

    NSDate *date1 = [dateFormatter dateFromString:obj1];
    NSDate *date2 = [dateFormatter dateFromString:obj2];

    return [date1 compare:date2];

}];

NSLog(@"%@",sortedDatesArray);



输出:

"9/15/2011 12:00:00 AM",
"9/15/2011 12:00:00 AM",
"9/15/2011 12:00:00 AM",
"10/16/2011 12:00:00 AM",
"10/16/2011 12:00:00 AM",
"11/16/2011 12:00:00 AM",
"11/16/2011 12:00:00 AM"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2011-05-14
    • 2011-08-20
    • 2011-09-19
    相关资源
    最近更新 更多