NSUserDefaults standardUserDefaults 同步给出了错误的结果 objective c

NSUserDefaults standardUserDefaults synchronize gives wrong result objective c

我想保存高分使用 synchronize 在我的应用程序中,但我得到了乱码。这是我得到的:
GameScene.m

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

为什么我得到错误的值以及如何解决这个问题?

你得到了一个错误的值,因为 rezult 是一个 NSString,你应该改变这个:

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

对此:

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

尽量不要每次都初始化另一个 nsuserdefaults 只是使用 [[NSUserDefaults standardUserDefaults] setValue:surname.text forKey:@"Nume"];来写 [[NSUserDefaults standardUserDefaults] valueForKey:@"Name"] 读取

并确保您使用相同的对象类型!