iDevice 게임을 개발 중이며 로컬 플레이어의 점수를 기기에 저장하고 싶습니다. 그러나 로컬 플레이어가 변경 될 수 있습니다. 예를 들어, 한 가족이 iPad를 공유하면 게임을하기 전에 GameCenter에 별도로 로그인 할 수 있습니다. 이 문제를 해결하기 위해 로컬 플레이어가 키를 결정하고 값이 GKScore 객체의 배열 인 사전으로 로컬 스코어를 저장하기로 결정했습니다.GameKit GKLocalPlayer 별칭을 NSDictionary 키로 사용합니다.
첫 번째 아이디어는 GKLocalPlayer 공유 인스턴스를 키로 사용하는 것이지만 NSCopying을 준수하지 않으므로 GKLocalPlayer는 이상적인 키 후보가 아닙니다. 두 번째 아이디어는 로컬 플레이어의 식별자를 사용하는 것이었지만 Apple은 "플레이어 식별자 문자열의 내용에 대해 가정하지 마십시오. 형식 및 길이는 변경 될 수 있습니다." 당연히 플레이어 식별자가 마술처럼 바뀌면 플레이어가 로컬 스코어를 잃을 수도 있습니다.
나의 마지막 아이디어는 로컬 플레이어의 별칭을 사용하는 것이 었습니다. 인증되지 않은 로컬 플레이어의 별칭 문자열이 nil
과 같은지 확인했습니다. 이 경우 사전 키로 [NSNull null]
을 사용하는 것이 안전합니까? 로컬 플레이어의 별칭이 일관성을 유지한다고 가정하는 것이 안전합니까?
고마워요! 필자는 잠시 전에 문서의 정확한 스 니펫을 발견했지만 답변을 주셔서 감사합니다. '[NSNull null]'을 사전 키로 사용하는 것은 어떨까요? –
@SamHertz : NSNull은 사전 키로 완벽하게 유효합니다. 사전 키의 유일한 제약 조건은 복사 가능해야하며 NSNull은 NSCopying을 구현해야한다는 것입니다. – Chuck