保存并加载高分

时间:2012-07-06 15:39:20

标签: objective-c xcode uilabel nsuserdefaults

我尝试使用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,就像它没有保存我的高分。

我做错了什么? 谢谢!

1 个答案:

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