GKTurnBasedMatch - 获取结束日期

时间:2013-10-27 21:21:40

标签: ios iphone game-center gamekit

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

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

目前我只是拉了一个参与者的最后一个转弯日期,但显然这甚至没有达到最佳状态。我认为最好的解决方法是在调用endMatchInTurn时发送的matchData对象中编码当前日期,但我希望我在API中找不到更好的解决方案。

谢谢! 卡宾

1 个答案:

答案 0 :(得分:0)

经过大量研究,没有有效的方法来实际获取GKTurnBasedMatch通过GameKit API中的-endMatchInTurnWithMatchData方法结束的时间。但是,我确实有一个完全可行的解决方案,只需要一些额外的工作。对于用于编码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
}