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