1

私のゲームでは、ユーザーのハイスコアを保存するために NSUserDefults を使用しています。初めてゲームを終了すると、ハイスコアがゲームのスコアに設定されますが、その後は毎回、ゲームのスコアが自動的にハイスコアとして設定されます。ここでの奇妙な点は、私のゲーム スコアが 0 の場合、私のハイスコアは最大のスコアのままですが、あるゲームの最後に私のスコアが 100 の場合はハイスコアとして設定されますが、その後のゲームで私のスコアが 50 の場合、私のハイスコアは50に設定します(スコアは私のハイスコアよりも低かったですが)。ここに私のviewdidloadコードがあります:

    highScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"HighScore"] intValue ];
highScoreLabel.text = [NSString stringWithFormat:@"%d",highScore];

ここに私のcheckIfHighscoreコードがあります:

-(void)checkIfHighScore
{
    if(gameOverScore > highScore)
    {
        highScore = gameOverScore;
        [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:highScore] forKey:@"HighScore"];
        [[NSUserDefaults standardUserDefaults] synchronize];

    }
    highScoreLabel.text = [NSString stringWithFormat:@"%d", highScore];
}

何が問題ですか?

4

1 に答える 1

1

highScore をロードしたフォームNSUserDefaultsObjectの型idになります。 にキャストしNSNumber、次にcheckIfHighScoreメソッドで と比較highScore.intValueしてから、次のようにしますgameOverScore

[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:gameOverScore] forKey:@"HighScore"];

数値オブジェクトとスカラー型 ( ) を混在させていることに注意してください。and演算子intは使用できません。また、<とスカラー変数の間でも使用できません。>==Object

于 2012-07-13T14:57:41.327 に答える