[英]Saved data lost after kill app using NSUserDefaults
我在我的設置中使用NSUserDefaults。 應用程序運行良好,即使我按下主頁鍵讓應用程序進入后台,但如果我殺了應用程序,NSUserDefaults中的數據保存將丟失。 這是我的代碼。 我使用同步。 第一次初始化:
if (![userDefaults integerForKey:
kORFootageAirPlayModeKey])
{
[userDefaults setInteger:TRUE forKey:kORFootageAirPlayModeKey];
}
[userDefaults synchronize];
在viewController中讀取值:
airPlayMode = [[NSUserDefaults standardUserDefaults]integerForKey:kORFootageAirPlayModeKey];
將其設置為動作:
- (IBAction)changeAirPlayStatus:(id)sender
{
if (sender)
{
airPlayMode = [sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:airPlayMode forKey:kORFootageAirPlayModeKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
.....
}
我沒有看到原因。
你有沒有在Simulator目錄中檢查過Library / Caches下面有保存NSUserDefaults的plist。 檢查它是否寫得正確。
請不要使用setInteger:TRUE。 這在很多層面都是錯誤的。 請改用setBOOL:YES。 或者setInteger:1。
確保保存數據的最佳方法是在applicationWillTerminate:
調用-synchronize
applicationWillTerminate:
在applicationWillResignActive:
程序委托中調用applicationWillTerminate:
.
編輯:
此外,steipete關於使用setInteger:TRUE的評論是准確的 - 使用setBool:YES代替。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.