簡體   English   中英

使用NSUserDefaults殺死應用程序后保存的數據丟失

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM