0

我正在尝试将 GameCenter 集成到我的 iPhone 应用程序中。我想要做的是将 NSString highScore 上传到我的 Game Center 排行榜。我遇到了关于字符串兼容性的问题,我不确定从这里该怎么做。这是我想将 highScore NSString 上传到 GameCenter 时调用的 void

-(void)submitScore {
int x = [highScore floatValue];
score=&x;
GKScore *myScoreValue = [[GKScore alloc] initWithCategory:@"grumpyEscapeHighScoresLeaderboard"];
myScoreValue.value = score;

[myScoreValue reportScoreWithCompletionHandler:^(NSError *error){
    if(error != nil){
        NSLog(@"Score Submission Failed");
    } else {
        NSLog(@"Score Submitted");
    }

}];
}

当它提交时,我在 GameCenter (803,089,816) 中得到一个巨大的数字,即使 highScore NSString 的值为 6。这是错误消息:

Incompatible pointer to integer conversion assigning to 'int64_t' (aka 'long long') from 'int*'

在我的 ViewController.h 中,我将 score 定义为

int *score;

我对Objective C和一般编码非常陌生。对不起,如果这个问题对其他人来说似乎很愚蠢。我已经尝试研究了很长时间如何做到这一点,但找不到任何答案。 是我从中获取代码并为我自己的项目修改它的教程。

4

1 回答 1

1

没有理由在此处使用 anint *而不是 an作为您的得分值,同样,如果您仅在方法中使用它,int也没有理由将其存储到您的实例变量中。score-submitScore

- (void)submitScore {
    GKScore *myScoreValue = [[GKScore alloc] initWithCategory:@"grumpyEscapeHighScoresLeaderboard"];
    myScoreValue.value = [highScore integerValue];

    [myScoreValue reportScoreWithCompletionHandler:^(NSError *error){
        if(error != nil){
            NSLog(@"Score Submission Failed");
        } else {
            NSLog(@"Score Submitted");
        }

    }];
}
于 2013-03-29T04:34:38.053 回答