游戏中心集成错误

时间:2013-03-29 04:30:51

标签: objective-c cocoa-touch

我正在尝试将GameCenter集成到我的iPhone应用程序中。我想要做的是将NSString highScore上传到我的Game Center排行榜。我遇到了有关字符串兼容性的问题,我不知道该怎么做。以下是我想将highScore NSString上传到GameCenter时调用的空白

-(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");
    }

}];
}

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

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

在我的ViewController.h中,这里我将得分定义为

int *score;

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

1 个答案:

答案 0 :(得分:1)

没有理由在此处使用int *而不是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");
        }

    }];
}