2014-02-06 39 views
0

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

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

回答

0

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

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