2

NSMutableDictionary(NSString オブジェクト) の NSMutableArray があります。NSString オブジェクトの 1 つは実際には日付であり、その日付に基づいて NSMutableArray を並べ替える必要があり、日付を文字列として並べ替えたくありません。どうすれば作れますか?

4

2 に答える 2

6

私が正しく理解している場合、配列には文字列を含む辞書が含まれており、それらの文字列を日付として並べ替えたいと考えています。おそらくこのようなもの:

[someArray sortWithOptions: 0 usingComparator: ^(id inObj1, id inObj2) {
    NSDate      *date1 = [NSDate dateWithString: [inObj1 objectForKey: @"dateString"]];
    NSDate      *date2 = [NSDate dateWithString: [inObj2 objectForKey: @"dateString"]];

    return [date1 compare: date2];
}];
于 2010-05-13T18:50:45.703 に答える
1

sortedArrayUsingFunction:context:メソッドを使用する必要があります。例えば:

NSInteger comparator( NSDictionary *d1, NSDictionary *d2, void *context )
{
  return [[d1 objectForKey:@"date"] compare:[d2 objectForKey:@"date"]];
}

// In some method:
NSArray *sortedArray = [array sortedArrayUsingFunction:comparator context:nil];

注: これはテストされていません。

于 2010-05-13T16:05:19.660 に答える