当我退出应用程序时,不会保存存储在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"];
}
}
答案 0 :(得分:2)
你使用了错误的方法。
valueForKey
和setValue:forKey:
是与Key Value Coding相关的方法,与NSUserDefaults
中设置持久数据无关。
你需要用
来阅读你的价值观[[NSUserDefaults standardUserDefaults] objectForKey:@"notifications"];
并用
写作[[NSUserDefaults standardUserDefaults] setObject:@"enabled" forKey:@"notifications"];