使用NSUserDefaults杀死应用程序后保存的数据丢失

kev*_*ung 6 nsuserdefaults ios

我在我的设置中使用NSUserDefaults.应用程序运行良好,即使我按下主页键让应用程序进入后台,但如果我杀了应用程序,NSUserDefaults中的数据保存将丢失.这是我的代码.我使用同步.第一次初始化:

 if (![userDefaults integerForKey:
          kORFootageAirPlayModeKey])
    {
        [userDefaults setInteger:TRUE forKey:kORFootageAirPlayModeKey];
    }
    [userDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)

在viewController中读取值:

airPlayMode = [[NSUserDefaults standardUserDefaults]integerForKey:kORFootageAirPlayModeKey];
Run Code Online (Sandbox Code Playgroud)

将其设置为动作:

- (IBAction)changeAirPlayStatus:(id)sender
{

    if (sender)
    {
        airPlayMode = [sender tag];

        [[NSUserDefaults standardUserDefaults] setInteger:airPlayMode forKey:kORFootageAirPlayModeKey];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
.....
Run Code Online (Sandbox Code Playgroud)

}

ste*_*ete 1

我看不出有什么理由。

您是否检查过 Simulator 目录,在 Library/Caches 下有保存 NSUserDefaults 的 plist。检查是否写正确。

请不要使用 setInteger:TRUE。这在很多层面上都是错误的。请改用 setBOOL:YES。或者设置Integer:1。