NSDictionary dictionaryWithContentsOfFile不按顺序加载数据

时间:2011-02-15 22:58:13

标签: objective-c plist nsdictionary

我正在尝试将一些数据从plist加载到数组中

NSDictionary* mydictionary = [ NSDictionary dictionaryWithContentsOfFile:[ [ [ NSBundle      mainBundle] bundlePath ] stringByAppendingPathComponent:@"MyLevels.plist" ] ];

NSMutableArray *panelNames1;                                                         
panelNames1 = [[NSMutableArray alloc] init];

for (id theKey in mydictionary) {        
    [panelNames1 addObject:[mydictionary objectForKey:theKey]]; 
}

但它似乎没有以与MyLevels.plist相同的顺序输出到数组中。

MyLevels.plist看起来像这样: [关键:1价值:一] [关键:2价值:两个] [关键:3价值:三] [关键:4价值:四] [关键:5价值:五]

但它按此顺序读取:三,一,四,二,五

知道为什么?? 或者甚至是另一种执行for循环的方式也许是正确的顺序。

由于

3 个答案:

答案 0 :(得分:4)

NSDictionary个对象不保留排序。您不应期望按照读取它们的相同顺序枚举密钥。

答案 1 :(得分:2)

如果顺序很重要,您应该在plist中创建一个数组,并从其中一个字典键访问它。

答案 2 :(得分:1)

  

知道为什么吗?

是。 NSDictionary无序。