我需要保存一个变量,该变量在用户每次点击应用程序中的按钮时递增。我一直试图用NSUserDefaults
这样做,但没有成功。下面是我使用的代码:保存增量int变量
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
当我输出此日志中,但是,我不断收到0
。
任何帮助将不胜感激。
我需要保存一个变量,该变量在用户每次点击应用程序中的按钮时递增。我一直试图用NSUserDefaults
这样做,但没有成功。下面是我使用的代码:保存增量int变量
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
当我输出此日志中,但是,我不断收到0
。
任何帮助将不胜感激。
尝试增加:
[[NSUserDefaults standardUserDefaults] synchronize];
每次你改变你的整数值时间之后。
引用苹果公司的文件上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。 (这是我如何调用日志,以防万一我做错了:'int log = [[NSUserDefaults standardUserDefaults] integerForKey:@“AppCount”]; NSLog(@“Pic count:%d”,log) ;' – bmueller 2012-08-17 06:36:11
@bmueller我实际上甚至没有声明“我”让你打开来做你自己的事情你想要一个可变的起点,如果不是这种情况,你可以使用“0” – 2012-08-17 06:39:48
好吧,它是再次增加,但仍然没有保存...当我退出时,重新启动应用程序,然后点击按钮,日志说我的计数回到0. – bmueller 2012-08-17 06:43:17
你可以使用Static NSUIInteger appCount = 0; 在函数user tap中增加它的值appCount ++; 保持应用程序内函数调用的值。应用程序关闭后,将它写入文件。
我终于让'appCount'通过使用'static NSInteger'来增加,但是当我关闭应用程序时它不会保存。 – bmueller 2012-08-17 06:23:26
您可以添加一个变量到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
- (void)viewDidLoad {
[super viewDidLoad];
countFirst= [[NSUserDefaults standardUserDefaults]integerForKey:@"Counter"];
countFirst++;
}
写这篇文章,无论你想递增。
[[NSUserDefaults standardUserDefaults] setInteger:countFirst++ forKey:@"Counter"];
这行代码看起来不错。也许错误是在你的代码的另一部分。 – 2012-08-17 06:00:59
你有没有同步userdefaults? – Aravindhan 2012-08-17 06:03:30
是的,我试着同步默认值。即使在记录变量'i'时,我总是一遍又一遍地返回'1'。我在这个类中声明'i'是一个实例变量,我应该做一些与它不同的事情吗? – bmueller 2012-08-17 06:10:03