2011-02-15 24 views
0

我試圖從一個plist中的一些數據加載到一個數組的NSDictionary dictionaryWithContentsOfFile犯規加載數據,以便

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的值:one] [鍵:2值:二】 [鍵:3值:三] [鍵:4值:四】 [重點:5超值:五]

但它順序讀取它:三,一,四,二,五個

任何想法,爲什麼? 甚至做for循環的另一種方式也許是按照正確的順序。

感謝

回答

4

NSDictionary對象不保留排序。你不應該期望按照它們被讀取的順序枚舉鍵。

+0

那麼閱讀plist的最佳方式是什麼? – Vasi

+2

@Vasi:如果順序很重要,請使用數組。 – Chuck

+1

您也不應該期望在任何情況下枚舉順序都是穩定的。 – bbum

1

任何想法爲什麼?

是的。 NSDictionary是無序的。

2

如果順序很重要,您應該在您的plist中創建一個數組,然後從其中一個字典鍵中進行訪問。