0

私は現在、すべてのネットワーク機能に Game Center を利用する iPhone のターン制ゲームを構築しています。ローカル プレイヤーがゲームに参加、作成、終了、および削除できる UITableView で試合を表示するカスタム UI を作成しました。

私の問題は、セルに関連する日付を表示したいということです(最後に行われたターン、まだターンが行われていないときに作成された試合、終了した試合ステータスの試合終了日)。私の人生では、試合が終了した正確な日時を導き出す良い方法を見つけられないようです。GKTurnBasedMatch オブジェクトには、優れた creationDate プロパティがありますが、試合がいつ終了したかを示すプロパティはありません。

現在、私は参加者の 1 人の最終ターン日を引っ張っているだけですが、明らかにそれは最適にはほど遠いものです。最善の回避策は、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 に答える