NSUserDefaults 不保存数据 Objective C
NSUserDefaults Not Saving Data Objective C
我正在创建这个包含用户分数的应用程序。当他们退出应用程序时,分数将被保存。我正在通过 NSUserDefaults 这样做,效果很好。问题是可以在其他视图中操纵用户分数。例如,他们可以使用他们的分数来购买东西等。为此,我将分数保存在 NSUserDefaults 中,然后在下一个视图中检索保存的数据。问题是由于某种原因没有保存数据。我有一个每秒运行一次的计时器来保存分数,当我单击按钮转到下一个视图时,我使用 IBAction 保存它。这是我用来初始化变量的内容:
score = [[[NSUserDefaults standardUserDefaults] objectForKey:@"score"] longLongValue];
这是为了保存它:
[[NSUserDefaults standardUserDefaults] setObject:@(score) forKey:@"score"];
我正在使用一个 long long 变量,这就是为什么我将它作为一个对象而不是整数。我不明白为什么当我改变观点时价值观会发生变化。每当我操纵分值时,我都会保存它。在每个视图的顶部,我都在声明它。我发现其他人也发过类似的问题,我都看过了。这些回复并没有解决我的问题,这就是我在这里提问的原因。同步
[[NSUserDefaults standardUserDefaults] synchronize];
我也没用。
您唯一缺少的是,synchronize
您没有告诉 NSUserDefault
将数据写入光盘。
// *** Get your score value ***
score = [[[NSUserDefaults standardUserDefaults] objectForKey:@"score"] longLongValue];
// *** manipulate it if needed ***
score+=100;
// *** save it back to `NSUserDefaults` ***
[[NSUserDefaults standardUserDefaults] setObject:@(score) forKey:@"score"];
// *** Synchronize your updates to `NSUserDefaults` by calling it, it immediately write data to disc ***
[[NSUserDefaults standardUserDefaults] synchronize];
有关 NSUserDefaults
的更多详细信息,请阅读 Apple Documentation
用这个。这将保存值
[[NSUserDefaults standardUserDefaults] setObject:@(score) forKey:@"score"];
[[NSUserDefaults standardUserDefaults] synchronize];
我正在创建这个包含用户分数的应用程序。当他们退出应用程序时,分数将被保存。我正在通过 NSUserDefaults 这样做,效果很好。问题是可以在其他视图中操纵用户分数。例如,他们可以使用他们的分数来购买东西等。为此,我将分数保存在 NSUserDefaults 中,然后在下一个视图中检索保存的数据。问题是由于某种原因没有保存数据。我有一个每秒运行一次的计时器来保存分数,当我单击按钮转到下一个视图时,我使用 IBAction 保存它。这是我用来初始化变量的内容:
score = [[[NSUserDefaults standardUserDefaults] objectForKey:@"score"] longLongValue];
这是为了保存它:
[[NSUserDefaults standardUserDefaults] setObject:@(score) forKey:@"score"];
我正在使用一个 long long 变量,这就是为什么我将它作为一个对象而不是整数。我不明白为什么当我改变观点时价值观会发生变化。每当我操纵分值时,我都会保存它。在每个视图的顶部,我都在声明它。我发现其他人也发过类似的问题,我都看过了。这些回复并没有解决我的问题,这就是我在这里提问的原因。同步
[[NSUserDefaults standardUserDefaults] synchronize];
我也没用。
您唯一缺少的是,synchronize
您没有告诉 NSUserDefault
将数据写入光盘。
// *** Get your score value ***
score = [[[NSUserDefaults standardUserDefaults] objectForKey:@"score"] longLongValue];
// *** manipulate it if needed ***
score+=100;
// *** save it back to `NSUserDefaults` ***
[[NSUserDefaults standardUserDefaults] setObject:@(score) forKey:@"score"];
// *** Synchronize your updates to `NSUserDefaults` by calling it, it immediately write data to disc ***
[[NSUserDefaults standardUserDefaults] synchronize];
有关 NSUserDefaults
的更多详细信息,请阅读 Apple Documentation
用这个。这将保存值
[[NSUserDefaults standardUserDefaults] setObject:@(score) forKey:@"score"];
[[NSUserDefaults standardUserDefaults] synchronize];