NSString stringWithFormat "implicit conversion loses integer precision"
NSString stringWithFormat "implicit conversion loses integer precision"
我正在尝试使用
保存高分
HighScore = [[NSUserDefaults standardUserDefaults]integerForKey:@"ScoreSaved"];
Intro3.text = [NSString stringWithFormat:@"HighScore: %i", HighScore];
它说:
"implicit conversion loses integer precision, NSInterger(aka long) to
int
-(void)EndGame
{
if (ScoreNumber > HighScore){
HighScore = ScoreNumber;
[[NSUserDefaults standardUserDefaults]setInteger:HighScore forKey:@"ScoreSaved"];
}
这是我的第一场比赛,我被困住了我该如何保存高分?
感谢您花时间阅读本文。
您在字符串格式设置中使用了错误的格式说明符,这导致 HighScore
变量 (NSInteger
) 的转换不正确。
使用用于 NSInteger
类型的 %ld
说明符:
Intro3.text = [NSString stringWithFormat:@"HighScore: %ld", HighScore];
您在 stringWithFormat
中使用了错误的说明符,但是如果您想同时支持 32 位和 64 位目标,则很难获得正确的说明符。使用 %ld
并将值转换为 long
:
通常更容易
Intro3.text = [NSString stringWithFormat:@"HighScore: %ld", (long)HighScore];
我正在尝试使用
保存高分 HighScore = [[NSUserDefaults standardUserDefaults]integerForKey:@"ScoreSaved"];
Intro3.text = [NSString stringWithFormat:@"HighScore: %i", HighScore];
它说:
"implicit conversion loses integer precision, NSInterger(aka long) to int
-(void)EndGame
{
if (ScoreNumber > HighScore){
HighScore = ScoreNumber;
[[NSUserDefaults standardUserDefaults]setInteger:HighScore forKey:@"ScoreSaved"];
}
这是我的第一场比赛,我被困住了我该如何保存高分? 感谢您花时间阅读本文。
您在字符串格式设置中使用了错误的格式说明符,这导致 HighScore
变量 (NSInteger
) 的转换不正确。
使用用于 NSInteger
类型的 %ld
说明符:
Intro3.text = [NSString stringWithFormat:@"HighScore: %ld", HighScore];
您在 stringWithFormat
中使用了错误的说明符,但是如果您想同时支持 32 位和 64 位目标,则很难获得正确的说明符。使用 %ld
并将值转换为 long
:
Intro3.text = [NSString stringWithFormat:@"HighScore: %ld", (long)HighScore];