0

我需要保存一个每次用户点击应用程序中的按钮时递增的变量。我一直在尝试这样做,NSUserDefaults但没有成功。这是我正在使用的代码:

[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];

但是,当我在日志中输出它时,我不断得到0.

任何帮助将不胜感激。

4

3 回答 3

2

尝试添加:

[[NSUserDefaults standardUserDefaults] synchronize];

每次更改整数值后。

引用 Apple 的文档synchronize

将对持久域的任何修改写入磁盘,并将所有未修改的持久域更新到磁盘上的内容。

http://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/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]; 
于 2012-08-17T06:11:36.647 回答
0

您可以使用静态 NSUIInteger appCount=0; 在用户点击的函数中增加它的值 appCount++;将值保留在应用程序内的函数调用中。应用程序关闭后,您将其写入文件。

于 2012-08-17T06:01:03.863 回答
0
- (void)viewDidLoad {

    [super viewDidLoad];

   countFirst= [[NSUserDefaults standardUserDefaults]integerForKey:@"Counter"];

    countFirst++;

}

把它写在你想增加的地方。

[[NSUserDefaults standardUserDefaults] setInteger:countFirst++ forKey:@"Counter"];
于 2016-02-12T11:15:21.233 回答