ios - NSUserDefaults standardUserDefaults setInteger for a long long int

标签 ios objective-c nsuserdefaults long-integer

我正在尝试在我的 iPhone 应用程序中创建一个高分系统,允许我在高分保存文件中存储一个 long long int,因为我希望高分值大于普通整数。但我能找到的代码是这样的:

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

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

    int y, RandomPosition;
    long long int ScoreNumber, HighScore;
    BOOL Start;

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

最佳答案

与其自己将分数分成两部分,不如将其值包装在 NSNumber 中,如下所示:

[[NSUserDefaults standardUserDefaults]
    setObject:[NSNumber numberWithLongLong:HighScore]
    forKey:@"HighScoreSaved"
];

检索高分如下:

HighScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"HighScoreSaved"] longLongValue];

关于ios - NSUserDefaults standardUserDefaults setInteger for a long long int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25224761/

相关文章:

iphone - iOS 第二语言本地化

iphone - 如何禁用除一个对象之外的 View 的用户交互?

ios - UIPageControl - 如何使背景透明?

ios - 为什么不在 NSUserDefaults 中存储密码是显而易见的?

ios - 设置包值返回 nil

ios - UITableView 中可移动但不可编辑的行

iphone - 导入 vcf vcard 文件时的 EXC_BAD_ACESS

objective-c - Obj-C、UITableView UI 改进以处理大量记录,也就是点击下一步获取更多行?

java - 如何以编程方式将图像下载到 iPad?

ios - 存储应用程序运行时间的值