NSString stringWithFormat"隐式转换失去整数精度"

时间:2015-03-10 11:09:26

标签: objective-c nsstring implicit-conversion stringwithformat

我试图使用

保存高分
 HighScore = [[NSUserDefaults standardUserDefaults]integerForKey:@"ScoreSaved"];
 Intro3.text = [NSString stringWithFormat:@"HighScore: %i", HighScore];

它说:

  

"隐式转换失去整数精度,NSInterger(又名长)   INT

-(void)EndGame
{

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

这是我的第一场比赛,我被困住了如何保存高分? 感谢您抽出宝贵时间阅读本文。

2 个答案:

答案 0 :(得分:4)

您使用stringWithFormat的错误说明符,但是如果您想同时支持32位和64位目标,则难以获得正确的说明符。它通常更容易使用%ld并将值转换为long

Intro3.text = [NSString stringWithFormat:@"HighScore: %ld", (long)HighScore];

答案 1 :(得分:0)

您在字符串格式中使用了错误的格式说明符,导致HighScore变量(NSInteger)的不正确转换。

使用适用于%ld类型的NSInteger说明符:

Intro3.text = [NSString stringWithFormat:@"HighScore: %ld", HighScore];