0

我目前正在构建一个 iPhone 回合制游戏,它利用 Game Center 来实现所有网络功能。我创建了一个自定义 UI 以在 UITableView 中显示匹配项,本地玩家可以在其中进入、创建、退出和删除游戏。

我的问题是,在我的单元格中,我想显示相关日期(最后一轮,尚未轮到时创建的匹配,以及结束匹配状态的匹配结束日期)。就我的一生而言,我似乎无法找到一个好的方法来得出比赛结束的确切日期和时间。GKTurnBasedMatch 对象具有很好的 creationDate 属性,但没有匹配结束时间的属性。

目前,我只是在拉动其中一名参与者的最后一回合日期,但显然这还不是最理想的。我认为最好的解决方法是在调用 endMatchInTurn 时发送的 matchData 对象中编码当前日期,但我希望我在 API 的某个地方缺少更好的解决方案。

谢谢!科尔宾

4

1 回答 1

0

经过大量研究,没有有效的方法可以通过 GameKit API 中的 -endMatchInTurnWithMatchData 方法实际获取 GKTurnBasedMatch 结束的时间。但是,我确实有一个完全可行的解决方案,只需要一些额外的工作。对于您用于编码 matchData 属性的任何对象,只需分配另一个属性并将其设为 NSDate。然后在调用 endMatch 方法之前,将新的 NSDate 属性设置为 [NSDate date],它返回当前日期和时间,并在作为 matchData 对象发送之前将其存档。我自己的代码如下:

GameState *stateToSave = [NSKeyedUnarchiver unarchiveObjectWithData:matchToQuit.matchData];
stateToSave.matchEndDate = [NSDate date];
NSData *endGameData = [NSKeyedArchiver archivedDataWithRootObject:stateToSave];
[matchToQuit endMatchInTurnWithMatchData:endGameData completionHandler:^(NSError *error) {
    // Code
}
于 2014-03-02T20:07:01.730 回答