我怎样才能使 int 等于 int64_t 而没有得到转换丢失整数精度警告?
How can i equal a int to a int64_t with out getting the conversion loses integer precision warning?
我收到隐式转换丢失整数精度警告,需要帮助寻找解决方案。我见过类似的问题,但还没有找到解决我的问题的方法。这是声明的整数...
@property (nonatomic) int64_t score;
NSInteger highscorenumber;
这是调用 game over 函数时我的 .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)。
试试这个:
highscorenumber = @(score);
试试这个
highscorenumber = [score integerValue];
为什么要用NSInteger
来存储highscorenumber
?
如果你想让它与 GameKit 兼容,它应该是 64 位的,
你需要使用 int64_t 作为你的高分 属性
int64_t highscorenumber;
NSInteger 和 long 总是指针大小的。这意味着它们在 32 位系统上是 32 位,在 64 位系统上是 64 位。
根据macosuint64_t定义为
typedef unsigned long long uint64_t;
因此,我建议您将 highscorenumber 更改为 NSUInteger 并将其保存到 NSUserDefaults as
[[NSUserDefaults standardUserDefaults] setValue:@(highscorenumber) forKey:@"highscoresaved"];
编辑:
取回价值:
NSNumber *highscorenumber = (NSNumber*)[[NSUserDefaults standardUserDefaults] valueForKey:@"highscoresaved"];
我收到隐式转换丢失整数精度警告,需要帮助寻找解决方案。我见过类似的问题,但还没有找到解决我的问题的方法。这是声明的整数...
@property (nonatomic) int64_t score;
NSInteger highscorenumber;
这是调用 game over 函数时我的 .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)。
试试这个:
highscorenumber = @(score);
试试这个
highscorenumber = [score integerValue];
为什么要用NSInteger
来存储highscorenumber
?
如果你想让它与 GameKit 兼容,它应该是 64 位的,
你需要使用 int64_t 作为你的高分 属性
int64_t highscorenumber;
NSInteger 和 long 总是指针大小的。这意味着它们在 32 位系统上是 32 位,在 64 位系统上是 64 位。
根据macosuint64_t定义为
typedef unsigned long long uint64_t;
因此,我建议您将 highscorenumber 更改为 NSUInteger 并将其保存到 NSUserDefaults as
[[NSUserDefaults standardUserDefaults] setValue:@(highscorenumber) forKey:@"highscoresaved"];
编辑:
取回价值:
NSNumber *highscorenumber = (NSNumber*)[[NSUserDefaults standardUserDefaults] valueForKey:@"highscoresaved"];