我正在使用自定义视图来显示基于回合制游戏的匹配列表。在自定义视图中,我遇到问题,显示当设备离线时播放器所涉及的当前游戏列表。但是当我检查游戏中心默认视图时,即使离线时匹配也会显示正常。我用来填充数组的代码如下(摘自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];
}
}];
为什么会发生这种情况?
答案 0 :(得分:1)
loadMatchesWithCompletionHandler:
将与Game Center服务器通信,如果您的设备处于离线状态,我希望它会失败。您正在检查error
是否不是nil
。 error.localizedDescription
是否告诉您没有连接?
我敢打赌,Game Center默认视图会显示您上次连接时缓存的匹配项。您也可以这样做,但请记住,您还必须缓存matchData
。不确定会有多重要,因为无论如何你都无法提交你的回合。