0

私のアプリケーションには、MM/dd/YYYY の形式で日付を表す文字列の配列があります。

以下は、この配列をソートするために使用したコードです

NSDateFormatter *formatter =[[NSDateFormatter alloc]init];

[formatter setDateFormat:@"MM/dd/YYYY"];
NSLog(@" arr %@",arr);
[arr sortUsingComparator:^NSComparisonResult(id obj1, id obj2)
 {

     NSDate *date1=[formatter dateFromString:obj1];
     NSDate *date2=[formatter dateFromString:obj2];
     return [date1 compare:date2];
 }];
NSLog(@" arr %@",arr);

以下はnslogの出力です

2013-04-08 17:23:48.112 SEEMR[2792:c07]  arr (
    "02/18/2013",
    "02/16/2013",
    "02/14/2013",
    "01/16/2013",
    "02/13/2013",
    "03/16/2013"
)
2013-04-08 17:24:07.662 SEEMR[2792:c07]  arr (
    "02/18/2013",
    "02/16/2013",
    "02/14/2013",
    "01/16/2013",
    "02/13/2013",
    "03/16/2013"
)

しかし、期待どおりにソートされていないので、仲間を助けてください

4

2 に答える 2

4

を使用するときNSDateFormatterは、フォーマット文字列が正しいかどうかを常にテストしてください。あなたのものではありません。そうあるべきですMM/dd/yyyy(大文字と小文字が重要です)。

つまり、フォーマッタが正しく動作しないため、すべてがdateFromString:返さnilれ、常に a と比較nilされnil、これは を返します0

日付をNSDateインスタンスとして保存すると、作業が楽になります。NSString一般に、日付をユーザーに提示する場合、または他のアプリケーション (Web サービスなど) に送信する場合にのみ、日付を に変換することをお勧めします。

于 2013-04-08T12:06:57.160 に答える
0

次のようなことができます。

NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"date property name" ascending:YES];
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];

それが役に立てば幸い!

于 2013-04-08T12:06:06.980 に答える