gpt4 book ai didi

ios - 我怎样才能使 int 等于 int64_t 而没有得到转换丢失整数精度警告?

转载 作者:行者123 更新时间:2023-11-29 01:54:35 26 4
gpt4 key购买 nike

我收到隐式转换丢失整数精度警告,需要帮助找到解决方案。我见过类似的问题,但尚未找到解决我的问题的方法。这是声明的整数...

@property (nonatomic) int64_t score;
NSInteger highscorenumber;

这是调用游戏结束函数时我的 .m 文件中的内容...

    if (score > highscorenumber) {
highscorenumber = score;
[[NSUserDefaults standardUserDefaults] setInteger:highscorenumber forKey:@"highscoresaved"];
[self clapsound];
}
else{
highscore.text = [NSString stringWithFormat:@"High Score: %li",(long)highscorenumber];
}

警告出现在这部分

        highscorenumber = score;

如果我将 highscorenumber 更改为 int64_t,则会出现警告...

        [[NSUserDefaults standardUserDefaults] setInteger:highscorenumber forKey:@"highscoresaved"];

我使用 int64_t 作为分数的原因是为了使用 GameKit (GameCenter)。

最佳答案

NSInteger 和 long 总是指针大小的。这意味着它们在 32 位系统上是 32 位,在 64 位系统上是 64 位。

mac os下uint64_t定义为

typedef unsigned long long   uint64_t;

因此,我建议您将 highscorenumber 更改为 NSUInteger 并将其保存到 NSUserDefaults 中

[[NSUserDefaults standardUserDefaults] setValue:@(highscorenumber) forKey:@"highscoresaved"];

编辑:

获取值(value):

NSNumber *highscorenumber = (NSNumber*)[[NSUserDefaults standardUserDefaults] valueForKey:@"highscoresaved"];

关于ios - 我怎样才能使 int 等于 int64_t 而没有得到转换丢失整数精度警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com