2012-12-02 5 views
5

NSMutableArrayの日付文字列をソートするにはいくつかの小さな作業をしていますが、私はsqlite dbから配列を取得しています。 あなたはそれがこの日付オブジェクトのNSMutableArrayを並べ替えるには

日付文字列のように表示されたアレイを印刷する場合です( "2011-05-01"、 "2011-02-01"、 "2012-01-08"、 「2012- 05から08" 、 「2010-01-09 )

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

答えて

22

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

これらの文字列をすべて含むdateArrayがあると思います。

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

OR

NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator: 
             ^(id obj1, id obj2) { 
              return [obj2 compare:obj1]; 
             }]; 
+0

彼の質問で示した日付形式は、文字列としても正しく並べ替えられます。 –

+0

これは不要です。文字列を手配するだけです。 – TheAmateurProgrammer

+0

可能であればコードを好きにしてください... – Joker

5

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

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

ことあなたの日付が実際にNSDate個のオブジェクトでも動作します。

あなたは、配列のソートコピーを作成したい場合:

一般的には、データベースによって、芋、行うべきでソート
NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)]; 
1

。 sqlite3はorder byをサポートしています。

関連する問題