2012-07-06 148 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