NSUserDefaults在启动之间更改值

时间:2010-07-28 11:26:16

标签: iphone nsuserdefaults

我在application delegate中的applicationWillTerminate中有以下代码:

NSLog(@"Source: %d", [[NSUserDefaults standardUserDefaults] integerForKey:@"Source"]);

我的applicationDidFinishLaunching在同一个app delegate中有相同的代码。

当我退出应用程序时,日志显示一个值(比如101),当我重新启动应用程序时,日志显示另一个值(比如105)。随后在用户默认值中更改值(比如102)可以正常工作,因为当我再次退出app时,在applicationWillTerminate方法中记录了正确的值(此时间102)。但是,重复重新启动应用程序日志105,而不管值的变化是什么。

如果我从模拟器中删除该应用并重新启动它,则会在启动时显示完全不同的值,并且此值会一直显示在后续启动中。

我不知道这里发生了什么。有人有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我不知道启动之间的价值变化而不费力,但是当您设置首选项键的值时,该值不会“保存”。您需要先在synchronize对象上调用NSUserDefault

e.g。

[_defaults setInteger:1 forKey:@"key"];
[_defaults synchronize];