我在我的设置中使用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];
}
.....
}
答案 0 :(得分:1)
我没有理由这样做。
您是否已在Simulator目录中检查过,在Library / Caches下面有保存NSUserDefaults的plist。检查它是否写得正确。
请不要使用setInteger:TRUE。这在很多层面都是错误的。请改用setBOOL:YES。或者setInteger:1。
答案 1 :(得分:1)
确保保存数据的最佳方法是调用-synchronize
中的applicationWillTerminate:
和应用程序代表中的applicationWillResignActive:
。
编辑:
另外,steipete关于使用setInteger:TRUE的评论是准确的 - 使用setBool:YES代替。