保存和载入高分(save and load highscore)

2019-06-26 03:05发布

我试图用NSUserDefults保存为我的游戏加载高分(NSInteger的)。 我创建了检查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];
}

当我进入这个视图 - 控制我的highscorelabel显示0,就像它不保存我的高分。

我该怎么办错了吗? 谢谢!

Answer 1:

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


文章来源: save and load highscore