2011-10-16 38 views
4

我有一個應用程序使用幾個不同的用戶默認值,需要儘快應用程序加載使用。其中一個負責將地圖視圖放大到用戶位置。加載應用程序時發生NSUserDefaults奇怪的事情

我遇到的問題是,當我加載用戶默認值時,它似乎認爲它們是空的,直到我通過設置應用程序更改它們。

發生了什麼事嗎?我正在使用iOS 5,並不確定這是否會對其產生影響。這真的很煩人,因爲我的應用程序依賴於加載後可用的數據。

注意:在更改/重新選擇設置視圖中的值後,它工作得非常好。

+0

添加一些代碼,請。 – chown

回答

7

確保您的設定值後,調用synchronize

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"someKey"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

編輯回答評論:

從文檔-registerDefaults:

登記的內容域不寫入磁盤; 每當您的應用程序啓動時,您需要調用此方法。您可以在應用程序的資源目錄中放置一個plist文件,並調用registerDefaults:您從該文件讀入的內容。

所以,在-applicationDidFinishLaunching:,你可以這樣註冊Root.plist默認:

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Root" ofType:@"plist"]]]; 
+0

這個問題在我第一次加載應用程序時就已經出現了。例如,假設我只安裝了它,所以我還沒有選擇任何設置。這是沒有采取我在我的Root.plist –

+0

@ JonW09中設置的默認值檢查我的eedits的問題。 – chown

+0

感謝您的幫助 –

相關問題