排序NSDates

kar*_*ick 1 iphone objective-c nsdictionary nsdate ios

我在我的程序中有几个词典,我已将所有这些词典放在一个数组中我想对那些日期进行排序因此字典应该交换它的位置,下面显示的是我正在使用的代码,但我没有得到它排序.请帮助我解决这个问题

**NSLog(排序前的@" - %d",[allDataArray count]);

for(int i=0;i<[allDataArray count]-1;i++){
    NSString *dateStr1=[[allDataArray objectAtIndex:i]objectForKey:@"Date"];
    for(int j=i+1;j<[allDataArray count];j++){
        NSString *dateStr2=[[allDataArray objectAtIndex:j]objectForKey:@"Date"];
        if(([(NSDate*)dateStr1 compare:(NSDate*)dateStr2]==NSOrderedAscending)
           ||([(NSDate*)dateStr1 compare:(NSDate*)dateStr2]==NSOrderedSame))
            [allDataArray replaceObjectAtIndex:i withObject:[allDataArray objectAtIndex:j]];
    }
}
   NSLog(@"afterSorting-numbers--%@",allDataArray);**
Run Code Online (Sandbox Code Playgroud)

Reg*_*ent 11

看起来你在这里重新发明轮子(排序已经在几十年前解决了),而是这样做:

NSArray *allDataArray = ...;
NSArray *sortedAllDataArray = [allDataArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"Date" ascending:YES]]];
Run Code Online (Sandbox Code Playgroud)

或这个:

NSArray *allDataArray = ...;
NSArray *sortedAllDataArray = [allDataArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *dict1, NSDictionary *dict2) {
    return [[dict1 objectForKey:@"Date"] compare:[dict2 objectForKey:@"Date"]];
}]
Run Code Online (Sandbox Code Playgroud)

  • @karthick:很高兴,我很乐意帮忙!顺便说一句,因为这是你在StackOverflow上的第一个问题,lemme只是向你介绍一些简洁的东西:你可以接受你的问题的最佳答案为"正确",以便将你的问题标记为已解决,并允许你和其他未来的访问者更有效地在StackOverflow上搜索特定问题的有效解决方案.解决的问题在搜索结果或列表中显示黄色的"n答案"标签.要接受答案,每个答案旁边的左侧都有一个复选标记,点击后会变为绿色.无论如何,在StackOverflow上玩得开心! (2认同)