4

NSUserDefultsを使用して、ゲームのハイスコア(nsinteger)を保存およびロードしようとしました。gameoverscoreが私のhighscoreよりも大きいかどうか、およびそれらを切り替えるかどうかをチェックするvoid関数を作成しました。ゲームが終わるたびに、私の現在のハイスコアを示すラベルが表示されるようにしたいと思います。これを行うには、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];
}

このビューコントローラに入ると、ハイスコアが保存されないように、ハイスコアラベルに0が表示されます。

私は何を間違えますか?ありがとう!

4

1 に答える 1

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 ];
于 2012-07-06T15:48:53.230 に答える