2012-05-09 9 views
0

nsdateの配列をソートする際に問題が発生しました。 はので、私は彼らが配列をソートするために、このようなコードを使用する多くの例で見たよう私はNSMutableArrayのソートNSMutableArrayにはsortedArrayUsingComparatorを使用したNSArrayが含まれています

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)]; 
}]; 

私はそれに私の配列を入れてみましたが、働いていません。 誰かがnsmdateを含むnsmutablearrayをどのようにソートするのが最も効果的かを教えてください。最新の日付をインデックス配列の一番上に置きたいと思います。

実際の質問は、どうすればarrDate内のデータをソートできますか?

ありがとうございます。

+0

「私はそれに私の配列を入れようとしましたが、うまくいきませんでした」何がうまくいかなかったのですか?配列は空でしたか?無期限の日付を挿入しようとするとクラッシュしましたか?配列は並べ替えられませんでしたか?明らかなのは、日付形式が配列の日付と一致しないことです。文字列には時刻情報が含まれていないので、 'hh:mm:ss'を削除してください。 – Joe

+0

フォーマットを心配しないでください。ちょうど私がそれを投稿するときはちょうどタイプミスです。今修正されました。私の問題は、配列内の日付をソートする方法です。並べ替えがうまくいきません、どうすればnsmutablearrayのsortedArrayUsingComparatorを使用できますか? – dejoong

答えて

1

使用している日付文字列と日付形式が一致しません。日付場合は、あなたの文字列が時間、分、秒が欠落していて、月に22月15と、いくつかの日付を持っている。すなわち

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

yyyy-MM-dd hh:mm:ss 

は、ユーザーが指定する日付のようになるはずです意味しますフォーマッタは日付を解析できません。それはnilを返すと思います。これはnilを配列に入れることを意味し、例外が発生します。

編集

実際の日付をソートするには、あなたのサンプルコードは、あなたが最初に最新たいことを除いてOKになりますので、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

関連する問題