2011-07-18 2 views

ответ

2

Здесь вы идете просто изменить некоторые части кода для вашего требования

- (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]; 
    } 
} 
4

Я считаю, что вы хотите использовать что-то вроде - NSMutableArray sortUsingSelector: и передать в @selector(compare:). То есть, если вы имел NSMutableArray из NSDates имени *dateArray*:

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

спасибо этого метод полезен, но для сравнения: селектора, есть только один аргумент, что-то вроде сравнения: (NSDate *) другое, но мне нужен другая дата сравнивать. – hzxu

Смежные вопросы