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];