iOS开发:为什么loadScoresWithCompletionHandler没有返回?

时间:2011-01-16 20:23:33

标签: iphone ipad ios gamekit game-center

我正在使用Game Kit API,我有一个非常简单的代码块,永远不会返回,甚至没有错误......

GKLeaderboard *pointsRequest = [[GKLeaderboard alloc] initWithPlayerIDs:[match playerIDs]];
if (pointsRequest != nil)
{
    //Set the points leaderboard category id
    [pointsRequest setCategory:kPOINTS_LEADERBOARD_ID];
    [pointsRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) 
    {
       if (error != nil)   //THIS LINE NEVER GETS HIT
       {
          NSLog(@"%@", [error localizedDescription]);           
       }

       if (scores != nil)  //NOR DOES THIS LINE
       {
        .
        .
        .

由于没有错误,我不确定如何解决这个问题。有没有人有任何想法什么是错的或我如何进一步调查什么是错的?

非常感谢你的智慧!

UPDATE:我终于能够获得这段代码返回,因为我不完全理解为什么。为了让它返回,我在尝试检索它之前不久就将一个分数发布到了排行榜。奇怪的是我以前在那里发过一个分数,所以我不知道为什么发布分数对这个问题有任何影响。

2 个答案:

答案 0 :(得分:4)

这实际上可能是一个刚刚在iOS 4.3 beta中得到纠正的错误。

来自开发者说明(来源:gadgetsdna.com

  

已修复:GameKit现在报告实际未提交成就或排行榜得分时出现错误。

我不是100%确定这与您的问题有关,但要找出的唯一方法是注册iOS开发人员计划并测试最新的测试版或等待最终的iOS 4.3 SDK问世

答案 1 :(得分:0)

尝试为已经发布的排行榜上没有任何分数的新玩家加载分数时出现问题。事实证明,那些“if”语句被击中了,但是它们下面的代码块并没有因为没有错误而且没有得分。无论如何,这对我来说是一个愚蠢的错误。但是感谢DavidD的贡献。即使他的答案与问题无关,我仍然学到了一些东西。