2012-12-02 129 views
5

我正在做一些小的工作,在NSMutableArray中排序日期字符串,我從sqlite數據庫中獲取數組。 如果打印它顯示像這樣如何排序日期對象的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