我尝试使用NSUserDefults为我的游戏保存并加载高分(nsinteger)。 我创建了一个void函数,用于检查gameoverscore是否大于我的高分,以及它是否可以在它们之间切换。我希望每次游戏结束时都会有一个标签显示我当前的高分。 要做到这一点,我为我的NSUsweDefults创建了一个属性,在我的viewdidload中我试图加载当前的高分,以及另一个函数(checkIfHighscore)。 这是我的NSUserDefults属性:
@property(readwrite) NSUserDefaults *prefs;
这是我的viewdidload代码:
NSInteger currectHighscore = [prefs integerForKey:@"highscore"];
highScoreLabel.text = [NSString stringWithFormat:@"%d",currectHighscore];
这是我的checkIfHighscore:
-(void)checkIfHighScore
{
if(gameOverScore > highScore)
{
highScore = gameOverScore;
[self newHighscoreAnimation];
[prefs setInteger:highScore forKey:@"highscore"];
[prefs synchronize];
}
highScoreLabel.text = [NSString stringWithFormat:@"Highscore: %d", highScore];
}
当我进入这个viewcontroller时,我的高分辨率显示为0,就像它没有保存我的高分。
我做错了什么? 谢谢!
答案 0 :(得分:3)
// Snippet used to save your highscore in the prefs.
int highScore = yourGameScore;
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:highScore] forKey:@"HighScore"];
[[NSUserDefaults standardUserDefaults] synchronize];
// Snippet used to get your highscore from the prefs.
highScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"HighScore"] intValue ];