2009-07-01 75 views
15

我試圖爲我的iPhone應用程序實現保存狀態。從plist文件讀取數據

我有叫SaveData.plist一個plist文件,我可以通過以下

NSString *pListPath2 = [bundle pathForResource:@"SaveData" ofType:@"plist"]; 
NSDictionary *dictionary2 = [[NSDictionary alloc] initWithContentsOfFile:pListPath2]; 

self.SaveData = dictionary2; 
[dictionary release]; 

plist文件讀取它的成員

SavedGame這是一個布爾告訴應用程序,如果這裏真的有效數據(如果他們在遊戲中沒有退出應用程序,我不希望它們成爲還原點。)

得分這是一個NSNumber。 這是一個NSNumber的時間

Playfield這是一個NSNumbers的16元素陣列

如何訪問NSDictionary裏面的那些元素?

回答

26

嘗試[NSDictionary objectForKey:]

,其中關鍵是在plist中成員的名稱。

例如:

BOOL save = [[dictionary2 objectForKey:@"SavedGame"] boolValue]; 

將存儲存儲在plist中的關鍵SavedGame到一個新的BOOL命名保存對象。

我想你的SavedGame布爾實際上存儲在NSDictionary作爲NSNumber,因此使用boolValue來獲得NSNumber的布爾值。

請嘗試此文檔:Apple NSDictionary Reference

+5

始終使用-objectForKey:如果你直接調用 - 如果你閱讀文檔,-valueForKey:用於鍵值觀察和Cocoa綁定。它不會返回錯誤的結果,但在這種情況下它做了不必要的工作。 – 2009-07-01 04:23:29

2

對於設置bool值可以使用:

[Dictionary setBool:TRUE forKey:@"preference"];

對於獲得布爾值,你可以使用:

[Dictionary boolForKey:@"preference"];