0

私はNSDictionary谷を取得していJSONます。NSLogキーの順序を実行するときは、次のとおりです: 4061740737409464106641306。値は事前にソートされているため、それが私が望む順序です。しかし、ループするNSDictionaryと、次の順序になります: 4061741066407374094641306。使用時に見える順番で入手することは可能NSLogですか?

4

3 に答える 3

4

辞書 (マップ) はソートされていません。それらを反復する場合、保証された順序はありません。すべてのエントリを取得することが保証されているだけです。

そのため、キーを取得し、必要な方法で並べ替えてから、並べ替えたキーの値を取得する必要があります。

例えば:

NSArray *keys = [myDictionary allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compare:)];

for (id key in sortedKeys) {
    id value = [myDictionary objectForKey:key];

    NSLog(@"%@ = %@", key, value);
}
于 2013-10-22T09:15:23.473 に答える
2

NSDictionary定義によって順序付けられていないため、値を追加するときに常に同じ順序である必要はありません。順序付けられたコレクションが必要な場合は、NSArray

于 2013-10-22T09:15:14.617 に答える