我需要保存一个每次用户点击应用程序中的按钮时递增的变量。我一直在尝试这样做,NSUserDefaults
但没有成功。这是我正在使用的代码:
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
但是,当我在日志中输出它时,我不断得到0
.
任何帮助将不胜感激。
我需要保存一个每次用户点击应用程序中的按钮时递增的变量。我一直在尝试这样做,NSUserDefaults
但没有成功。这是我正在使用的代码:
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
但是,当我在日志中输出它时,我不断得到0
.
任何帮助将不胜感激。
尝试添加:
[[NSUserDefaults standardUserDefaults] synchronize];
每次更改整数值后。
引用 Apple 的文档synchronize
:
将对持久域的任何修改写入磁盘,并将所有未修改的持久域更新到磁盘上的内容。
因此,通过此修改,您的最终代码应如下所示:
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
[[NSUserDefaults standardUserDefaults] synchronize];
编辑:实际上再三考虑,试一试:
我认为问题在于使用 i++ 假设应用程序将始终能够跟踪计数,并且每次您重新进入应用程序时,我都会重置。
以下作品,我刚刚测试过。
if (![[NSUserDefaults standardUserDefaults] integerForKey:@"AppCount"]) {
[[NSUserDefaults standardUserDefaults] setInteger:i forKey:@"AppCount"];
}else{
[[NSUserDefaults standardUserDefaults] setInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"AppCount"] + 1 forKey:@"AppCount"];
}
[[NSUserDefaults standardUserDefaults] synchronize];
您可以使用静态 NSUIInteger appCount=0; 在用户点击的函数中增加它的值 appCount++;将值保留在应用程序内的函数调用中。应用程序关闭后,您将其写入文件。
- (void)viewDidLoad {
[super viewDidLoad];
countFirst= [[NSUserDefaults standardUserDefaults]integerForKey:@"Counter"];
countFirst++;
}
把它写在你想增加的地方。
[[NSUserDefaults standardUserDefaults] setInteger:countFirst++ forKey:@"Counter"];