保存增量int变量

时间:2012-08-17 05:58:37

标签: iphone objective-c ios nsuserdefaults

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

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

但是,当我在日志中输出时,我会继续0

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

尝试添加:

[[NSUserDefaults standardUserDefaults] synchronize];

每次更改整数值后。

synchronize上引用Apple的文档:

  

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

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]; 

答案 1 :(得分:0)

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

答案 2 :(得分:0)

- (void)viewDidLoad {

    [super viewDidLoad];

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

    countFirst++;

}

在您希望增加的位置写下此内容。

[[NSUserDefaults standardUserDefaults] setInteger:countFirst++ forKey:@"Counter"];