2012-07-06 153 views
4

我试图用NSUserDefults为我的游戏保存并加载高分(nsinteger)。 我创建了一个void函数来检查gameoverscore是否比我的高分大,以及它是否在它们之间切换。我希望每次比赛结束时都会有一个标签显示我的高分。 要做到这一点,我创建了我的NSUsweDefults属性,在我的viewdidload我试图加载currect highcore,和另一个函数(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,就像它不能保存我的高分。

我做错了什么? 谢谢!

+0

你不会告诉我们发生了什么问题。 – trojanfoe 2012-07-06 15:42:56

+0

我编辑我的问题 – user1492776 2012-07-06 15:46:15

回答

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 ]; 
+0

谢谢!!!!!这是工作! – user1492776 2012-07-06 15:54:09

+0

@ user1492776欢迎 – Guru 2012-07-06 15:57:43

+1

有用,谢谢! – 2012-11-01 14:27:46