1

我正在使用自定义视图来显示我的回合制游戏中的匹配列表。使用自定义视图时,我在显示设备离线时玩家参与的当前游戏列表时遇到问题。但是当我检查游戏中心默认视图时,即使离线,比赛也能正常显示。我用来填充数组的代码如下(摘自 Ray Wenderlich 的书中)

[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error)
     {

         if (error)
         {
             NSLog(@"%@", error.localizedDescription);
         }
         else
         {

             NSMutableArray *myMatches = [NSMutableArray array];
             NSMutableArray *otherMatches = [NSMutableArray array];
             NSMutableArray *endedMatches = [NSMutableArray array];

             for (GKTurnBasedMatch *m in matches)
             {
                 GKTurnBasedMatchOutcome myOutcome;
                 for (GKTurnBasedParticipant *par in m.participants)
                 {
                     if ([par.playerID isEqualToString: [GKLocalPlayer localPlayer].playerID])
                     {
                         myOutcome = par.matchOutcome;
                     }
                 }

                 if (m.status != GKTurnBasedMatchStatusEnded && myOutcome != GKTurnBasedMatchOutcomeQuit)
                 {
                     if ([m.currentParticipant.playerID
                          isEqualToString:[GKLocalPlayer localPlayer].playerID])
                     {
                         [myMatches addObject:m];
                     }
                     else
                     {
                         [otherMatches addObject:m];
                     }
                 }
                 else
                 {
                     [endedMatches addObject:m];
                 }
             }
             // 6
             allMyMatches = [[NSArray alloc]initWithObjects:myMatches,otherMatches,endedMatches, nil];

             NSLog(@"%@",allMyMatches);


             [self.tableView reloadData];

         }
     }];

任何想法为什么会发生这种情况?

4

1 回答 1

1

loadMatchesWithCompletionHandler:将与 Game Center 服务器对话,如果您的设备离线,我预计它会失败。你正在检查error不是nil。告诉你error.localizedDescription你没有连接?

我敢打赌,游戏中心的默认视图会向您显示上次连接时缓存的匹配项。您也可以这样做,但请记住,您还必须缓存matchData. 不确定这有多重要,因为无论如何您都无法提交轮到您的请求。

于 2013-05-22T23:52:11.790 回答