我尝试使用 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];
}

当我进入这个 View Controller 时,我的高分标签显示为 0,就像它没有保存我的高分一样。

我做错了什么?
谢谢!

最佳答案

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

关于objective-c - 保存和加载高分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11365352/

10-12 14:33