@Dan F が述べたように、NSDictionary はエントリをソートしません。@Hot Licks のコメントで述べたように、NSDictionary はその内容を任意の順序で並べます。ディクショナリ内のエントリの順序については、何も想定しないでください。NSArray は、この種のものにより適しています。
事前に定義された並べ替え順序で辞書の内容を表示したい場合は、関連付けられている値を使用して並べ替えられたキーの配列を取得できます。NSDictionary クラスには、これをサポートする メソッドkeysSortedByValueUsingSelector:
とメソッドがあります。keysSortedByValueUsingComparator:
したがって、値を昇順にソートして表示順序を制御したい場合は、次のように実装できます。
NSArray *orderedKeys = [myDictionary keysSortedByUsingSelector:@selector(caseInsensitiveCompare:)];
for (int i = 0; i < [sortedKeys count]; i++) {
NSString *key = [sortedKeys objectAtIndex:i];
NSLog(@"%@ = %@", key, [myDictionary objectForKey:key]);
}
結果には、辞書内の各エントリが、各エントリ内の値でソートされて表示されます。