NSUserDefaults standardUserDefaults setInteger for long long int

gmo*_*242 3 objective-c nsuserdefaults ios long-integer

我正在尝试在我的iPhone应用程序中创建一个高分系统,允许我在高分保存文件中存储一个很长的int,因为我期望高分值大于正常整数.但是我在代码方面找到的就是:

   if (ScoreNumber > HighScore) {
    HighScore = ScoreNumber;
    [[NSUserDefaults standardUserDefaults] setInteger:HighScore forKey:@"HighScoreSaved"];
}
Run Code Online (Sandbox Code Playgroud)

HighScoreSaved将无法正确保存,一旦得分数达到大于2,147,483,647的值或4字节整数的最大整数值,HighScoreSaved将保存完全不同的整数值.以下是我在ViewController.h中的数据类型:

    int y, RandomPosition;
    long long int ScoreNumber, HighScore;
    BOOL Start;
Run Code Online (Sandbox Code Playgroud)

只是为了重申并确保我尽可能清楚,我正在寻找一种在objective-c中存储长期int高分值的方法.任何输入都会非常感激,这个问题可能看起来很愚蠢,但这是我第一个使用xcode和objective-c的应用程序,所以一切都会好的.谢谢.

das*_*ght 7

不是将分数分成两部分,而是将其值包含在内NSNumber,如下所示:

[[NSUserDefaults standardUserDefaults]
    setObject:[NSNumber numberWithLongLong:HighScore]
    forKey:@"HighScoreSaved"
];
Run Code Online (Sandbox Code Playgroud)

检索高分如下:

HighScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"HighScoreSaved"] longLongValue];
Run Code Online (Sandbox Code Playgroud)