2013-02-24 71 views
0

我遇到了一些奇怪的NSUserDefaults行爲。我保存我的數據,然後同步,然後執行NSUserDefaults的NSlog以確保其保存。數據顯示爲從NSlog中正確保存,但是當我完全關閉應用程序(雙擊主頁按鈕並殺死應用程序)時,它重新啓動時值沒有改變。更奇怪的是,如果我通過保存NSUserDefaults重複代碼幾次,殺死應用程序,重新加載NSUserDefaults,有時它會正確保存,而其他時間則不會。奇怪的iPhone SDK NSUserDefaults行爲

我看過這個帖子Strange NSUserDefaults behavior但我打電話同步,所以我不認爲這是我的問題。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:@"MyString" forKey:@"testString"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]); 

任何幫助,非常感謝。

真正讓我困惑的是,如果standardUserDefaults的NSLog顯示數據已保存,爲什麼它不會在應用程序被殺死之後呢?

感謝


UPDATE


貌似問題是在可變和不可變的數組我被保存到一個NSUserDefaults的查詢股價。我在檢索數據時使用了mutablecopy,似乎解決了這個問題。

+0

Synchronize返回一個布爾值。你爲什麼不記錄下來,看看它是否快樂。 BOOL結果= [prefs synchronize]; NSLog(@「同步結果=%d」,結果); – danh 2013-02-24 21:21:48

回答

0

對於所獲得的價值,你可以使用類似這樣

NSUserDEfaults *ud = [NSUserDefault standarUserDefaults]; 
[ud [email protected]"YourKey"]; 

如果返回零還沒有被保存。