Sorting 如何对NSDate数组进行排序(在NSMUTABLEARRY中)?

Sorting 如何对NSDate数组进行排序(在NSMUTABLEARRY中)?,sorting,nsarray,nsdate,Sorting,Nsarray,Nsdate,有人能告诉我如何按照实际日期对NSDate的数组(NSMutableArray)进行排序吗 谢谢 现在,您只需根据您的需求修改部分代码即可 - (NSArray *)sortedWeightEntriesByWeightDate:(NSArray *)unsortedArray { NSMutableArray *tempArray = [NSMutableArray array]; NSMutableArray *sortedArray = [NSMutableArray a

有人能告诉我如何按照实际日期对NSDate的数组(NSMutableArray)进行排序吗


谢谢

现在,您只需根据您的需求修改部分代码即可

- (NSArray *)sortedWeightEntriesByWeightDate:(NSArray *)unsortedArray {

    NSMutableArray *tempArray = [NSMutableArray array];
    NSMutableArray *sortedArray = [NSMutableArray arrayWithCapacity:0];

    @try {
        for(int i = 0; i < [unsortedArray count];i++) {

            NSDateFormatter *df = [[NSDateFormatter alloc]init];
            MyDataModal *entry = [unsortedArray objectAtIndex:i];       
            [df setDateFormat:@"yyyy-MM-dd"];       
            NSDate *date = [df dateFromString:entry.weightDate];        
            NSMutableDictionary *dict = [NSMutableDictionary dictionary];

            if(date) {  
                [dict setObject:entry forKey:@"entity"];        
                [dict setObject:date forKey:@"date"];       
                [tempArray addObject:dict];
            }
            [df release];
        }

        NSInteger counter = [tempArray count];
        NSDate *compareDate;
        NSInteger index;

        for(int i = 0 ; i < counter; i++) {
            index = i;
            compareDate = [[tempArray objectAtIndex:i] valueForKey:@"date"];        
            NSDate *compareDateSecond;

            for(int j = i+1 ; j < counter; j++) {
                compareDateSecond=[[tempArray objectAtIndex:j] valueForKey:@"date"];
                NSComparisonResult result = [compareDate compare:compareDateSecond];
                if(result == NSOrderedDescending) {
                    compareDate = compareDateSecond;
                    index=j;
                }
            }
            if(i!=index)
                [tempArray exchangeObjectAtIndex:i withObjectAtIndex:index];
        }


        NSInteger counterIndex = [tempArray count];
        for(int i = 0; i < counterIndex ; i++) {
            [sortedArray addObject:[[tempArray objectAtIndex:i] valueForKey:@"entity"]];
        }

    }
    @catch (NSException * e) {
        NSLog(@"An exception occured while sorting weight entries by date");
    }
    @finally {
        return [NSArray arrayWithArray:sortedArray];
    }   
}
-(NSArray*)按权重排序的第十八个NTRIES日期:(NSArray*)未排序的数据{
NSMutableArray*tempArray=[NSMutableArray];
NSMutableArray*sortedArray=[NSMutableArray阵列容量:0];
@试一试{
对于(int i=0;i<[UnsortedDarray count];i++){
NSDateFormatter*df=[[NSDateFormatter alloc]init];
MyDataModal*条目=[unsortedArray objectAtIndex:i];
[df setDateFormat:@“yyyy-MM-dd”];
NSDate*date=[df dateFromString:entry.weightDate];
NSMutableDictionary*dict=[NSMutableDictionary];
如果(日期){
[dict setObject:entry forKey:@“entity”];
[dict setObject:date forKey:@“date”];
[tempArray addObject:dict];
}
[df释放];
}
NSInteger计数器=[tempArray count];
NSDate*比较;
NSInteger指数;
对于(int i=0;i
我相信您希望使用类似于-并传入
@selector(比较:)
的东西。例如,假设您有一个名为
*dateArray*:

[dateArray sortUsingSelector:@selector(compare:)];

谢谢,这个方法很有用,但是对于compare:selector,只有一个参数,类似于compare:(NSDate*)other,但是我需要另一个日期来比较。