2016-02-29 61 views
-3

我想在我的應用程序中使用 synchronize 保存高分,但是我得到的是亂碼數字。在這裏我得到了什麼:
GameScene.mNSUserDefaults standardUserDefaults同步給出錯誤的結果目標c

if (highScore <score) { 
    highScore = score; 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setInteger:highScore forKey:@"highScore"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 

GameOver.m

NSUserDefaults *prefs =[NSUserDefaults standardUserDefaults]; 
    NSString *rezult =[prefs stringForKey:@"highScore"]; 

    SKLabelNode *highscorelabel = [SKLabelNode labelNodeWithFontNamed:@"Menlo-Bold"]; 
    highscorelabel.text =[NSString stringWithFormat:@"%ld",(long)rezult]; 
     highscorelabel.position = CGPointMake(CGRectGetMidX(self.frame), 280); 
     highscorelabel.fontSize = 45; 
     highscorelabel.zPosition = 5; 
    [self addChild:highscorelabel]; 

爲什麼我得到錯誤的價值,以及如何解決這個問題?

+4

''[prefs setInteger:highScore forKey:@「highScore」];'你寫一個整數;那麼你將它讀回爲一個字符串指針:'NSString * rezult = [prefs stringForKey:@「highScore」];' - 當然它將永遠不會相同;你很幸運它沒有墜毀。 – holex

回答

2

你得到一個錯誤的值,因爲rezultNSString,你應該改變這樣的:

NSString *rezult =[prefs stringForKey:@"highScore"]; 

這樣:

NSInteger rezult = [prefs integerForKey:@"highScore"]; 
-1

嘗試每次不初始化另一隻NSUserDefaults的使用 [[NSUserDefaults standardUserDefaults] setValue:surname.text forKey:@「Nume」];寫 [[NSUserDefaults standardUserDefaults] valueForKey:@「Name」]讀取

並確保您使用相同的對象類型!