2011-07-23 9 views
1

配列の並べ替えに関連する問題があります。オブジェクト日付で並べ替える、配列の時間問題(iPhone開発)

私はそれぞれのインデックスにクラスオブジェクトbを持つNSMutable配列を持っています。

クラスbは複数のフィールドを含んでいますint、string、nsdateと似ています。

クラスbの時間(NSdate)に基づいて、A配列を昇順に並べ替える必要があります。

私は日付の並べ替えの問題については、stackoverflowの質問に従っていますが、これは日付配列の場合のみです。

Sort NSArray of date strings or objects

親切に私を導きます。あなたは自分の要件のためのコードの一部を変更して行く。ここ

答えて

0

事前に

感謝の

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

方法について:これは、日付、あなたがのためにソートすることを前提とし

NSArray *myArray = [NSArray arrayWithObjects: 
        [NSDictionary dictionaryWithObjectsAndKeys:[NSDate distantFuture], @"theDate", nil], 
        [NSDictionary dictionaryWithObjectsAndKeys:[NSDate distantPast], @"theDate", nil], 
        nil]; 
NSLog(@"Before sorting: %@", myArray); 
NSSortDescriptor *dateSortDescriptor = [NSSortDescriptor sortDescriptorWithKey: @"theDate" ascending: YES]; 

NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject: dateSortDescriptor]]; 
NSLog(@"After Sorting: %@", sortedArray); 

キーを持っている(それは本質的にプロパティである)

関連する問題