游戏中心基于回合的匹配列表在离线时不显示

时间:2013-05-22 23:04:28

标签: iphone game-center gkturnbasedmatch

我正在使用自定义视图来显示基于回合制游戏的匹配列表。在自定义视图中,我遇到问题,显示当设备离线时播放器所涉及的当前游戏列表。但是当我检查游戏中心默认视图时,即使离线时匹配也会显示正常。我用来填充数组的代码如下(摘自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];

         }
     }];

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

loadMatchesWithCompletionHandler:将与Game Center服务器通信,如果您的设备处于离线状态,我希望它会失败。您正在检查error是否不是nilerror.localizedDescription是否告诉您没有连接?

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