2012-03-02 10 views
4

最新のSDKとXCode 4.2でiOS 4アプリケーションを開発しています。NSDictionaryをNSDateとしてソート

私はNSDate値ですキーがNSMutableStringあるNSMutableDictionaryを持っています。

NSMutableDictionary私はそのキーを並べ替えるが、どうすればいいのか分からない。

私は最初の1月の日付、2月のようにしたいと思います。

NSDateキー形式はdd/mm/yyyyです。

NSMutableDictionaryにすべてのキーと値がある場合、どのように並べ替えることができますか? (私はもっと追加するつもりはない)。

+0

ルックアップはキーではなく、インデックスに基づいているあなたは、辞書を並べ替えることはできません。最初に配列に変換する必要があります。 –

+0

SOの非常に自身のOle Begemannからここを見てください。この例はテーブルビューを駆動するためのものですが、原則はあなたのケースに当てはまるべきです。 http://oleb.net/blog/2011/12/tutorial-how-to-sort-and-group-uitableview-by-date/ – jrturton

+0

これはソートされたNSMutableDictionaryの実装です:http:// cocoawithlove。 com/2008/12/ordereddictionary-subclassing-cocoa.html – VansFannel

答えて

8

これはかなり標準的なことですが、ソート NSDictionaryを並べ替えることはできますが、辞書から取得した配列を並べ替えることもできます。

これは私がやるだろうと何である:

// get all keys into array 
NSArray * keys = [your_dictionary allKeys]; 

// sort it 
NSArray * sorted_keys = [keys sortedArrayUsingSelector:@selector(compare:)]; 

// now, access the values in order 
for (NSDate * key in sorted_keys) 
{ 
    // get value 
    NSMutableString * your_value = [your_dictionary valueForKey: key]; 

    // perform operations 
} 
7

は、このコード試してみてください。

NSArray *sortedArray = [[myDict allKeys] sortedArrayUsingSelector:@selector(compare:)]; 

をしかし、それは、キーと値の検索ではなく、インデックス付きのルックアップに基づいているあなたは、辞書を並べ替えることができないことに注意してください。

+0

このコードでは、別の配列にすべてのキーをソートしておき、順番に辞書値にアクセスすることができます。 – VansFannel

+1

はい、それは正しいです、それはそのように機能します。 –

関連する問題