应用程序退出后,NSUserDefaults不会保存

时间:2015-07-19 14:53:17

标签: ios objective-c nsuserdefaults

当我退出应用程序时,不会保存存储在NSUserDefaults中的值。我保存了这样的值:

[[NSUserDefaults standardUserDefaults] setValue:@"enabled" forKey:@"notifications"];
[[NSUserDefaults standardUserDefaults] synchronize];

即使在应用程序退出后,如何使用NSUserDefaults存储内容?

这是我检索值的方法:

[[NSUserDefaults standardUserDefaults] valueForKey:@"notifications"]

前两行确实在运行,因为我在按下按钮时将它们运行。当我转到另一个视图并返回到具有按钮的视图时,它将返回我设置的值。

我看到了什么问题。我在第一个视图中有这个代码并假设它正常工作:

NSUserDefaults *Def = [NSUserDefaults standardUserDefaults];
NSString *Ver = [Def stringForKey:@"Version"];
NSString *CurVer = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey];
if(Ver == nil || [Ver compare:CurVer] != 0)
{
    if(Ver == nil)
    {
        [[NSUserDefaults standardUserDefaults] setValue:@"disabled" forKey:@"notifications"];
    }
}

1 个答案:

答案 0 :(得分:2)

你使用了错误的方法。

valueForKeysetValue:forKey:是与Key Value Coding相关的方法,与NSUserDefaults中设置持久数据无关。

你需要用

来阅读你的价值观
[[NSUserDefaults standardUserDefaults] objectForKey:@"notifications"];

并用

写作
[[NSUserDefaults standardUserDefaults] setObject:@"enabled" forKey:@"notifications"];