2012-05-09 89 views
0

我有問題的排序數組的nsdate。 所以我有日期的數組NSMutableArray的排序NSMutableArray包含NSArray使用sortedArrayUsingComparator

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 
NSArray *arrString = [[NSArray alloc] initWithObjects:@"2012-05-01", @"2012-02-01", @"2012-22-03", @"2012-05-01", @"2012-15-01", nil]; 
NSMutableArray *arrDate = [[NSMutableArray alloc] initWithCapacity:arrString.count]; 
for (NSString *item in arrString) { 
    NSDate *date = [dateFormatter dateFromString:item]; 
    [arrDate addObject:date]; 
} 

裏面,因爲我在很多情況下,看到他們用這樣的代碼進行排序數組:

NSArray *sortedArray = [arrDate sortedArrayUsingComparator:^(id firstObject, id secondObject) { 
    return [((NSDate *)firstObject) compare:((NSDate *)secondObject)]; 
}]; 

我試圖把我的陣列上,但沒有奏效。 任何人都可以幫助我如何最有效地排序nsmutablearray包含nsdate。我想把最新的日期放在索引數組的頂部。

所以真正的問題是,我怎樣才能排序內數據arrDate?

謝謝。

+0

「我試圖把我的陣列,但沒有奏效。」什麼沒有用?數組是空的嗎?它試圖插入一個無效日期時崩潰了嗎?數組是否沒有排序?因爲我能看到的顯而易見的事情是您的日期格式與數組中的日期不匹配。由於字符串不包含時間信息,因此刪除'hh:mm:ss'。 – Joe

+0

不要擔心格式就好,它只是當我發佈它的錯字。現在它修復了。我的問題是我如何排序數組內的日期。排序沒有工作,我如何使用sortedArrayUsingComparator爲我的nsmutablearray? – dejoong

回答

1

您的日期格式與您使用的日期字符串不匹配。

yyyy-MM-dd hh:mm:ss 

意味着你提供的日期應該是這個樣子:

2012-05-09 15:54:21 
     ^^ Day 
    ^^ Month 

即你的字符串缺少的小時,分​​鍾和秒,你有一些日期與本月22日和15月。如果日期格式化程序不能解析日期,我認爲它返回零,這意味着你正試圖把數組放入數組中,這將導致異常。

編輯

要實際日期排序,示例代碼除非你想最近的第一,所以反向看起來不錯的compare:

NSArray *sortedArray = [arrDate sortedArrayUsingComparator:^(id firstObject, id secondObject) { 
    return [secondObject compare: firstObject]; 
}]; 

或者有一個可變的數組,你可以進行排序在適當的位置:

[arrDate sortUsingComparator:^(id firstObject, id secondObject) { 
    return [secondObject compare: firstObject]; 
}];  
+0

對不起格式不重要,它只是當我發佈的問題,我已經修復了我的代碼錯別字。所以我們可以回到原來的問題,我如何排序數組包含nsdate? – dejoong

+0

@dejoong:希望編輯能夠回答你的問題 – JeremyP

+0

嗨,傑里米,我認爲它適用於你的方法,謝謝。但我好奇爲什麼這個字符串 - > @「2012-05-08 19:00:43」不適用於NSDateFormatter @「yyyy-MM-dd hh:mm:ss」如果我使用[dateFormatter dateFromString:@「2012-05 -08 19:00:43「];回報是零。你知道爲什麼嗎? – dejoong

相關問題