我正在尝试将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是我从中获取代码的教程,并为我自己的项目修改了它。
答案 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");
}
}];
}