等到GameCenter得分下载ID完成

时间:2014-02-06 08:01:24

标签: iphone objective-c ios7 objective-c-blocks game-center

我想从GameCenter下载分数,但我不知道在下载分数时如何等待。当我运行此代码时,它返回null。我认为,当[leaderboardRequest loadScoresWithCompletionHandler: ...下载分数时,该方法必须等待。

- (NSString*) getScore: (NSString*) leaderboardID
{
    __block NSString *score = nil;
    GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
    if (leaderboardRequest != nil)
    {
        leaderboardRequest.identifier = leaderboardID;
        [leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
            if (error != nil)
            {
                NSLog(@"%@", [error localizedDescription]);
            }
            if (scores != nil)
            {
                int64_t scoreInt = leaderboardRequest.localPlayerScore.value;
                score = [NSString stringWithFormat:@"%lld", scoreInt];

            }
        }];
    }
    return score;
}

1 个答案:

答案 0 :(得分:0)

当操作完成时(在另一个线程上),将调用完成处理程序中的代码。

您有几个选项,您可以将分数存储在某处并发布通知以通知主线程操作已完成。