2009-12-19 80 views
4

我想給一個plist文件條目分配一個布爾值。我正在做以下事情:如何寫一個BOOL到plist?

NSString *aBool = realBoolValue ? @"YES" : @"NO";  
[myplist setValue: aBool forKey:@"boolKey"]; 
[myplist writeToFile: [NSHomeDirectory() stringByAppendingPathComponent: plistFilePath] atomically:NO]; 

但是這個分配從來不需要。我正在做以上,因爲以下不起作用:

[myplist setValue: realBoolValue forKey:@"boolKey"]; 

它給出了不兼容的類型錯誤。我究竟做錯了什麼?

- 編輯---

plistFilePath被初始化爲

plistFilePath = [NSHomeDirectory() stringByAppendingPathComponent: @"Library/Preferences/myfile.plist"]; 
+0

你沒有報告你如何初始化'plistFilePath';它可能是未正確初始化,或者該路徑中不存在文件。 – kiamlaluno 2009-12-19 23:21:14

+1

文件是否永遠不會輸出或者是否存在與該特定鍵有關的特定問題? 如果plistFilePath是你上面所描述的,你將會有一個僞造的目錄,因爲你嘗試追加兩次NSHomeDirectory。而且,該目錄是否存在? – hallski 2009-12-19 23:53:28

+0

這正是問題所在。謝謝。 – user230949 2009-12-19 23:56:03

回答

16

您可以在一個NSNumber的對象把它包裝:

[NSNumber numberWithBool:yourBool] 

使用[NSNumber的boolValue]回讀時來自plist的價值。

+0

謝謝。這是正確的轉換,但價值仍然沒有保存到plist。路徑是正確的。我在模擬器上的Xcode上運行它。你有什麼想法可能是錯誤的?如果路徑或鍵名稱不正確,它應該會引發錯誤? – user230949 2009-12-19 22:58:51

+0

你正在讀你的plist到一個'NSMutableDictionary'嗎? – ohhorob 2009-12-19 23:20:36

+0

是的 - 它是一個NSMutableDictionary。 – user230949 2009-12-19 23:41:50

0
[NSNumber numberWithBool:yourBool] 

如果你這樣做,你會得到一個號碼,當你調用[email protected]"boolKey"。 但是,如果您在plist文件中添加密鑰的bool,您將獲得一個NSCFBoolen