我目前正在构建一个基于iPhone回合的游戏,它利用游戏中心的所有网络功能。我创建了一个自定义UI来在UITableView中显示比赛,本地玩家可以在其中进入、创建、退出和删除游戏。
我的问题是,在我的单元格中,我想要显示相关的日期(最后一轮,还没有轮到时创建的比赛,以及结束比赛状态的比赛结束日期)。对我来说,我似乎想不出一个好的方法来推断比赛结束的确切日期和时间。GKTurnBasedMatch对象有很棒的creationDate属性,但没有指定比赛何时结束的属性。
目前我只是拉取其中一个参与者的最后一次轮换日期,但显然这并不是最优的。我认为最好的解决办法是在调用endMatchInTurn时发送的matchData对象中编码当前日期,但我希望我在API中的某个地方缺少更好的解决方案。
谢谢!科尔宾
发布于 2014-03-03 04:07:02
经过大量的研究,没有一种有效的方法可以通过GameKit接口中的-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
}https://stackoverflow.com/questions/19623739
复制相似问题