5

NSMutableArrayの日付文字列を並べ替える小さな作業を行っています。sqliteデータベースから配列を取得しています。配列を印刷すると、次のように表示されます

日付文字列は( "2011-05-01"、 "2011-02-01"、 "2012-01-08"、 "2012-05-08"、 "2010-01-09)

日付を昇順で表示したい。みんなを助けてください.....私はobjcの初心者です。

4

3 に答える 3

22

まず、すべての日付文字列(NSString)オブジェクトをNSDateオブジェクトに変換してから、これらを並べ替える必要がありdateObjectsます。

あなたはdateArrayそれらすべての文字列を含んでいると思います。

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" 
                                                           ascending:NO];
NSArray *descriptors = [NSArray arrayWithObject:descriptor];
NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors];

また

NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator: 
                                       ^(id obj1, id obj2) {
                                           return [obj2 compare:obj1];
                                       }];
于 2012-12-02T07:28:21.367 に答える
5

あなたの質問のように、あなたの日付が本当にフォーマットの文字列である場合YYYY-mm-dd、これはそれらを昇順でソートします:

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

日付が実際にNSDateオブジェクトである場合にも機能します。

配列のソートされたコピーを作成する場合:

NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)];
于 2012-12-02T07:28:42.450 に答える
1

一般に、並べ替えはデータベースによって実行する必要があります。sqlite3はによる順序付けをサポートします。

于 2012-12-02T08:05:26.567 に答える