2

以下のような配列に日付があり、並べ替えたいと思います。

 NSMutableArray *arrDates =[[NSMutableArray alloc]init];
[arrDates addObject:@"24/01/2010"];
[arrDates addObject:@"15/05/2014"];
[arrDates addObject:@"04/03/2011"];
[arrDates addObject:@"30/05/2013"];
[arrDates addObject:@"11/10/2012"];

以下のコードを試してみましたが、ここでキーとして正確に渡す必要があるものを取得できません。

NSSortDescriptor *sortDis = [[NSSortDescriptor alloc] initWithKey:????? ascending:TRUE];
[arr sortUsingDescriptors:[NSArray arrayWithObject:sortDis]];

私は自分自身を渡しましたが、日付(日)にのみ基づいてソートしています。

以下のように結果を表示したい

24/01/2010
04/03/2011
11/10/2012
30/05/2013
15/05/2014

また、以下の行で試しました

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

しかし、役に立たない。助けてください。

4

4 に答える 4

8

適切なタイプを使用してデータを保存します。これは日付の場合でNSDateあり、次を使用できます。

NSArray *sorted = [array sortedArrayUsingComparator:^NSComparisonResult(NSDate *date1, NSDate *date2) {
    return [date1 compare:date2];
}];

オブジェクトのでarrayあると仮定します。NSArrayNSDate

于 2013-06-04T11:37:02.767 に答える
4

試す

NSMutableArray *arrDates =[[NSMutableArray alloc]init];
[arrDates addObject:@"24/01/2010"];
[arrDates addObject:@"15/05/2014"];
[arrDates addObject:@"04/03/2011"];
[arrDates addObject:@"30/05/2013"];
[arrDates addObject:@"11/10/2012"];

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
[arrDates sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    NSDate *date1 = [dateFormatter dateFromString:obj1];
    NSDate *date2 = [dateFormatter dateFromString:obj2];
    return [date1 compare:date2];
}];
于 2013-06-04T11:37:33.690 に答える
1

これを使用するには、それらを NSDate オブジェクトとして追加する必要があります。

NSString *dateString = @"01/02/2010";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];
[dateFormatter release];

配列にNSDatesが含まれると、正しくソートされます

または、NSDates を保存したくない場合は、比較するときに日付に変換して比較します

于 2013-06-04T11:38:19.740 に答える