Разработка для iOS: почему loadScoresWithCompletionHandler никогда не возвращается? - PullRequest
3 голосов
/ 16 января 2011

Я играю с API Game Kit, и у меня есть очень простой блок кода, который никогда не возвращается, даже с ошибкой ...

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
       {
        .
        .
        .

Так как ошибки нет, я не уверен, как ее устранить. У кого-нибудь есть идеи, что не так или как я могу дополнительно выяснить, что не так?

Большое спасибо за вашу мудрость!

ОБНОВЛЕНИЕ: Я наконец смог вернуть этот блок кода, хотя я не до конца понимаю, почему. Чтобы вернуть его, я отправил счет в таблицу лидеров незадолго до попытки получить его. Странно то, что у меня там раньше была оценка, поэтому я не знаю, почему публикация результатов повлияла на эту проблему.

Ответы [ 2 ]

4 голосов
/ 25 января 2011

На самом деле это может быть ошибка, которая только что исправлена ​​в бета-версии iOS 4.3.

Из заметок разработчика (источник: gadgetsdna.com )

ИСПРАВЛЕНО: GameKit теперь сообщает об ошибке, когда достижения или результаты в таблице лидеров фактически не отправляются.

Я не уверен на 100%, что это связано с вашей проблемой, но единственный способ выяснить этолибо зарегистрируйтесь в программе для разработчиков iOS и протестируйте последнюю бета-версию, либо дождитесь выхода окончательного iOS 4.3 SDK.

0 голосов
/ 25 января 2011

Проблема возникла при попытке загрузить результаты для новых игроков, у которых еще не было результатов в списке лидеров. Оказывается, что эти «если» операторы были ударены, но блоки кода под ними не были, так как не было ошибок и не было баллов. Во всяком случае, это была глупая ошибка с моей стороны. Однако, спасибо DavidD за его вклад. Даже если его ответ не имел отношения к проблеме, я все же кое-что узнал.

...