2016-06-13 8 views
-2

以下のようにJSONがあります。私が見せたいとJSONModelを使用して順序付きNSDictionaryをマッピングする方法

odds: { 
0501: { 
x: 2.75, 
description: "a" 
}, 
0502: { 
x: 3.25, 
description: "b" 
}, 
0513: { 
x: 3.5, 
description: "c" 
}, 
0503: { 
x: 3.5, 
description: "d" 
}, 
0505: { 
x: 7.5, 
description: "e" 
}, 
0504: { 
x: 7.5, 
description: "f" 
}, 
0512: { 
x: 10, 
description: "g" 
} 
} 

このハッシュは、HTTPレスポンスから来ているが、私はJSONModelを使用することは、それをマップするとNSDictionaryのことをマッピングするための唯一の方法があります。このJSONをNSDictionary(あなたが推測できるように)にマッピングするとき、これは順序付けられていないデータのシーケンスが混在して現れます。

JSONModelとNSDictionaryを使用してシーケンスを分割せずにこのJSONをマップする方法はありますか。

+0

このjsonをNSDictionaryに変換するとどうなりますか? –

+0

シーケンスが変更されます。 – miletliyusuf

+2

順序付けされたNSDictionaryのようなものはなく、JSON辞書のキーの順序も関係ありません。なぜあなたはここで注文を心配していますか? – rmaddy

答えて

0

NSDictionaryは本質的に順不同です:

Are keys and values in an NSDictionary ordered?

あなたはキーと値のエントリの順序を保持したい場合は、NSDictionary以外のデータ構造を使用する必要があります。 NSDictionaryでデータを渡すライブラリでは、オーダーを保持できません。

+0

NSHashTableを使いたかったのですが、JSONModelでそのオブジェクトをマップできません。私はJavaのようなハッシュマップのようなデータ構造を必要とします – miletliyusuf

+0

JavaのHashMapは、どちらもオーダー保存ではありません。 (ただし、LinkedHashMapは、JSONModelがNSDictionaryを返した場合、その注文は既に破棄されています。注文をするには、別のライブラリを使用する必要があります。 –

0

私がこのような状況で行ったことは、辞書に加えて別の配列で辞書キーを並べ替えることです。順序付きキー配列を使用して、辞書値を表示する方法を決定します。

+0

正しい方法がないので、私は辞書のキーをソートできません。 jsonにはxの値があり、ソートする必要があります。オッズでキーをソートすると、x値のシーケンスが変わることがあります。 – miletliyusuf

+0

おそらくデータを別の形式に変換する必要があります。値を繰り返し、jsonをx値と説明を持つオブジェクトに変換し、それを配列に配置してx値をソートします。 – Wyatt

0

辞書はソートできませんが、JSONがオブジェクトの配列であるように見えるため、結果のNSDictionaryをfor ... inで繰り返し、可変配列に要素を追加してください。

その後、x値を比較して.sortInPlaceを使用して結果の配列をソートします。

関連する問題