2012-08-17 233 views
0

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

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

当我输出此日志中,但是,我不断收到0

任何帮助将不胜感激。

+2

这行代码看起来不错。也许错误是在你的代码的另一部分。 – 2012-08-17 06:00:59

+0

你有没有同步userdefaults? – Aravindhan 2012-08-17 06:03:30

+0

是的,我试着同步默认值。即使在记录变量'i'时,我总是一遍又一遍地返回'1'。我在这个类中声明'i'是一个实例变量,我应该做一些与它不同的事情吗? – bmueller 2012-08-17 06:10:03

回答

2

尝试增加:

[[NSUserDefaults standardUserDefaults] synchronize]; 

每次你改变你的整数值时间之后。

引用苹果公司的文件上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 ++假定应用程序将始终能够跟踪计数,并且每次您重新输入应用程序ig重置。

以下工作,我只是测试它。

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

你在哪里以及如何声明'我'?使用这段代码,我每次调用日志时都会回到0。 (这是我如何调用日志,以防万一我做错了:'int log = [[NSUserDefaults standardUserDefaults] integerForKey:@“AppCount”]; NSLog(@“Pic count:%d”,log) ;' – bmueller 2012-08-17 06:36:11

+0

@bmueller我实际上甚至没有声明“我”让你打开来做你自己的事情你想要一个可变的起点,如果不是这种情况,你可以使用“0” – 2012-08-17 06:39:48

+0

好吧,它是再次增加,但仍然没有保存...当我退出时,重新启动应用程序,然后点击按钮,日志说我的计数回到0. – bmueller 2012-08-17 06:43:17

0

你可以使用Static NSUIInteger appCount = 0; 在函数user tap中增加它的值appCount ++; 保持应用程序内函数调用的值。应用程序关闭后,将它写入文件。

+0

我终于让'appCount'通过使用'static NSInteger'来增加,但是当我关闭应用程序时它不会保存。 – bmueller 2012-08-17 06:23:26

+0

您可以添加一个变量到info.plist文件,然后在关闭应用程序之前为其分配商店值,您可以访问信息。plist date如 NSString * finalPath = [NSString stringWithFormat:@“%@”,[[NSBundle mainBundle] pathForResource:@“Info”ofType:@“plist”]]; NSDictionary * plistData = [NSDictionary dictionaryWithContentsOfFile:finalPath]; [plistData objectForKey:@“RemoteURL”]; – 2012-08-17 06:44:33

0
- (void)viewDidLoad { 

    [super viewDidLoad]; 

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

    countFirst++; 

} 

写这篇文章,无论你想递增。

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