2012-03-29 7 views
0

を変更せずにNSArrayにNSDictionaryの内容を取得します。は、私が使用しているため

内容は、URLから受信され、次のように取得されています。

NSDictionary *myDict = [[NSDictionary alloc] initWithContentsOfURL:url];  

私は内容の順序を維持することにしたいです。それ、どうやったら出来るの?あなたが値を格納した後にNSArrayをソートする必要があり

おかげ

+0

辞書はデータの順序付けられた表現ではありません。 myDictには順序はなく、キーと値の関連付けだけです。 –

+0

あなたはこれを見てみたいかもしれません:http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html – Dair

+0

dictの内容を配列に代入した後にシャッフルされるxmlレスポンスをサーバから取得します。私は、すべてのソリューションから得たもので、辞書をソートすることはできません。どのように動作させるためのサンプルコードですか? – iOSDev

答えて

0

。私はあなたが配列をソートする方法を知っているが、このような方法NSArrayありません。

[anArray sortedArrayUsingSelector:@selector(mySortFunc:)]; 

ですから、これを呼び出してから、カスタムソート関数を作る:

- (NSComparisonResult)mySortFunc:(Object *)otherObject { 
    //Implement this to how you want to sort it. 
    // return 
} 

がためにここを見て詳細:

How to sort an NSMutableArray with custom objects in it?

または代わりに:私が注文したNSDictionaryのを作る方法を参照作ったコメントを見てください。

http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html

1

辞書データ構造は、本当に、ただキーと値を暗黙の順序を持​​っていません。キーに適用できることを覚えている場合は、配列でキーを取得し、一致する値を取得できます。

3

The order of the keys in an NSDictionary is undefined

あなたはあなたがそれらを配列に表示したいと考えているソート順序を持っている場合は、配列をソートすることができます。あなたがファイル内にあるのと同じ順序になるようにそれらを探しているのであれば、NSDictionaryを通すことはそれを不可能にするでしょう。

arrayWithContentsOfURLがありますが、ファイルが適切な形式である必要があるため、それが役立つかどうかわかりません。

0

残念ながら、NSDictionariesには注文の概念がありません。あなたが戻ってあなたがそれらを置くのと同じ順序でオブジェクトを取得する保証はありません。

彼らは別のオプションを使用することです-[NSArray sortedArrayUsingSelector:]

を使用して配列している後は、(再)オブジェクトを並べ替えることができguaraeentee注文を行うNSDictionary以外のdiffernetコンテナ。 Matt Gallagherには、このブログでこれを実現するためのクラスクラスタのeaxmpaleがあります。“OrderedDictionary: Subclassing a Cocoa class cluster”

関連する問題