2013-10-27 2 views
0

현재 모든 센터 기능을 위해 Game Center를 사용하는 iPhone 회전 기반 게임을 제작 중입니다. 로컬 플레이어가 게임을 입력, 생성, 종료 및 삭제할 수있는 UITableView에서 일치 항목을 표시하는 사용자 지정 UI를 만들었습니다.GKTurnBasedMatch - 종료 날짜 얻기

내 문제는 내 셀에서 관련 날짜 (마지막 턴 시간, 아직 턴을 수행하지 않았을 때 생성 된 일치 횟수, 종료 된 일치 상태의 종료 날짜와 일치 함)를 표시하고 싶습니다. 내 인생에서 정확한 경기가 끝난 날짜와 시간을 유도하는 좋은 방법을 찾지 못하는 것 같습니다. GKTurnBasedMatch 객체에는 훌륭한 creationDate 속성이 있지만 일치가 종료 된 시점에 대한 속성은 없습니다.

현재 참가자 중 마지막 턴 날짜를 가져오고 있지만 분명히 최적에 근접하지는 않습니다. 최선의 해결 방법은 endMatchInTurn이 호출 될 때 보내진 matchData 객체의 현재 날짜를 인코딩하는 것이라고 생각하지만 API의 더 나은 솔루션이 누락 되었기를 바랍니다.

감사합니다. 코빈

답변

0

많은 연구 끝에 GameKit API에서 -endMatchInTurnWithMatchData 메서드를 통해 GKTurnBasedMatch가 종료 된 시간을 실제로 가져올 수있는 유효한 방법이 없습니다. 그러나, 나는 단지 약간의 추가 작업이 필요한 완벽하게 실행 가능한 솔루션을 가지고 있습니다. matchData 속성을 인코딩하는 데 사용하는 객체에 관계없이 다른 속성을 할당하고 NSDate로 만듭니다. 그런 다음 endMatch 메서드를 호출하기 전에 새 NSDate 속성을 [NSDate date]로 설정합니다.이 NSDate 속성은 현재 날짜와 시간을 반환하고 matchData 개체로 보내기 전에 보관합니다. 내 코드는 다음과 같습니다.

GameState *stateToSave = [NSKeyedUnarchiver unarchiveObjectWithData:matchToQuit.matchData]; 
stateToSave.matchEndDate = [NSDate date]; 
NSData *endGameData = [NSKeyedArchiver archivedDataWithRootObject:stateToSave]; 
[matchToQuit endMatchInTurnWithMatchData:endGameData completionHandler:^(NSError *error) { 
    // Code 
}