NSDictonaryをなんとなく高速列挙してたら、期待している通りの順番で返ってこなかったのでメモ。

// この書き方だと、順序が保証されない。1,2,3とは返ってこない。
for (id key in dictionary) {
NSLog(@"%@", key);
}

NSArrayのsortedArrayUsingComparatorでソートしてから取り出すようにしました。

NSArray *keys = [dictionary allKeys];
// ソート
keys = [keys sortedArrayUsingComparator:^(id o1, id o2) {
return [o1 compare:o2];
}];
NSMutableArray *array = [NSMutableArray array];
// あとはソートされた順番にNSDictionaryから取得するだけ
for (id key in keys) {
[array addObject:[dictionary[key]]];
}

この記事を書いた人

kubou

kubou

2049, inc.
web業界で生活しています。
お仕事の割合はディレクション:8、開発:2くらい。