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

}];
}

送信すると、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とコーディング全般に非常に慣れていません。この質問が他の人にとってばかげていると思われる場合は申し訳ありません。これを行う方法を長い間研究しようとしましたが、答えが見つかりませんでした。 これは、コードを取得し、自分のプロジェクト用に変更したチュートリアルです

4

1 に答える 1

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

    }];
}
于 2013-03-29T04:34:38.053 に答える