Я разрабатываю игру для iDevice и хочу сохранить результаты локального игрока на устройстве. Однако локальный игрок может измениться. Например, если в семье есть общий iPad, они могут войти в GameCenter отдельно, прежде чем играть в игру. Чтобы решить эту проблему, я решил хранить локальные результаты в виде словаря, где ключи определяются локальным игроком, а значения представляют собой массивы объектов GKscore.
Моей первой идеей было использовать общий экземпляр GKLocalPlayer в качестве ключа, но, поскольку он не соответствует NSCopying, GKLocalPlayer не является идеальным кандидатом на роль ключа. Моя вторая идея состояла в том, чтобы использовать идентификатор локального проигрывателя, но Apple заявляет: «Не делайте предположений о содержании строки идентификатора проигрывателя. Его формат и длина могут быть изменены». Естественно, я обеспокоен тем, что игрок может потерять свои локальные очки, если его идентификатор игрока однажды волшебным образом изменится.
Моей последней идеей было использовать псевдоним локального игрока. Я подтвердил, что строка псевдонима для неаутентифицированного локального игрока равна nil
. Безопасно ли в этом случае использовать [NSNull null]
в качестве словарного ключа? Безопасно ли предположить, что псевдоним локального игрока останется неизменным?