2013-03-28 48 views
1

我不明白的邏輯:當我創建通過Settings.bundle ...爲什麼我的代碼不能通過[NSUserDefaults standardUserDefaults]訪問值?

[[NSUserDefaults standardUserDefaults] stringForKey:@"mykey1"] 

從代碼訪問,但是當設置捆綁值是零

,只要我通過Settings.app觸摸該鍵此關鍵是我的代碼可讀。

解決方案我發現需要讀取文件「Root.plist」,從它建立一個字典,register的值和synchronize他們。

我多次閱讀Apple文檔 - 我仍然不理解用一組標準設置提供應用程序的想法和標準模式。

我學習的任何提示?

回答

2

Settings.bundle的存在對NSUserDefaults沒有任何影響。直到從默認值改變值,該值反映在NSUserDefaults中。

正確的解決方案是使用NSUserDefaults registerDefaults:。在很多情況下,您可以使用Root.plist的內容加載默認字典。你不需要爲此調用synchronize。每次運行應用程序時都會註冊默認設置。這些值實際上並不存儲。當您詢問NSUserDefaults的值時,如果不存在明確的值,則會查看已註冊的默認值。

您應該在應用程序啓動時儘快註冊默認設置。

+0

謝謝!我仍然感到困惑:蘋果爲什麼不提供至少應用程序使用Settings.bundle作爲默認值的選項?這個任務是否有標準的實現?我見過一對夫婦,他們看起來不太平等,所以這裏有什麼建議? – tschloss

相關問題