NSMutableArrayの日付文字列を並べ替える小さな作業を行っています。sqliteデータベースから配列を取得しています。配列を印刷すると、次のように表示されます
日付文字列は( "2011-05-01"、 "2011-02-01"、 "2012-01-08"、 "2012-05-08"、 "2010-01-09)
日付を昇順で表示したい。みんなを助けてください.....私はobjcの初心者です。
NSMutableArrayの日付文字列を並べ替える小さな作業を行っています。sqliteデータベースから配列を取得しています。配列を印刷すると、次のように表示されます
日付文字列は( "2011-05-01"、 "2011-02-01"、 "2012-01-08"、 "2012-05-08"、 "2010-01-09)
日付を昇順で表示したい。みんなを助けてください.....私はobjcの初心者です。
まず、すべての日付文字列(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];
}];
あなたの質問のように、あなたの日付が本当にフォーマットの文字列である場合YYYY-mm-dd
、これはそれらを昇順でソートします:
[arrayOfDates sortUsingSelector:@selector(compare:)];
日付が実際にNSDate
オブジェクトである場合にも機能します。
配列のソートされたコピーを作成する場合:
NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)];
一般に、並べ替えはデータベースによって実行する必要があります。sqlite3はによる順序付けをサポートします。