【问题标题】:GKTurnBasedMatch - Obtaining the End DateGKTurnBasedMatch - 获取结束日期
【发布时间】:2013-10-27 21:21:40
【问题描述】:

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

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

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

谢谢! 科尔宾

【问题讨论】:

    标签: ios iphone game-center gamekit


    【解决方案1】:

    经过大量研究,没有有效的方法可以通过 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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多