为什么NSDictionary在内存中按字母顺序排列,但在枚举中不是?

iBu*_*uys 4 sorting cocoa nsdictionary alphabetical

我理解对NSDictionary进行排序的正确方法是从键创建一个数组,对数组进行排序,然后枚举数组并从那里对NSDictionary进行操作.我的问题是,对于NSDictionary*dict,键和字符串值,

为什么这个字母:

NSLog(@"%@", dict);
Run Code Online (Sandbox Code Playgroud)

但这不是:

for (NSString *w in dict)
{
    NSLog(@"%@", w);
}
Run Code Online (Sandbox Code Playgroud)

看起来很奇怪......我做错了什么?

提前致谢.

Lou*_*nco 6

这不是"在内存中" - %@导致在dict上调用一条消息,并对其进行排序.枚举旨在为您提供对内容的最快,原始访问.如果您需要对其进行排序,则必须对其进行排序.

看看Objective-C的这个免费排序字典

http://code.google.com/p/cocoa-sorted-dictionary/