2013-07-22 3 views
0

Я довольно новичок в cocos2d, и у меня возникли проблемы с использованием NSUserDefaults для хранения и извлечения данных, специфичных для пользователя.Использование NSUserDefaults

В игре, которую я делаю, пользователь рыбак, который обновляет свое снаряжение, зарабатывая монеты. Например, удочка имеет определенную мощность, которая может быть повышена по мере продвижения игрока в игре.

Я нашел достаточно легким для хранения и извлечения значения из UserDefaults, но я не могу понять, как установить начальное значение мощности удочки и не иметь этого значения, чтобы сбросить мощность удочки каждый раз, когда игра включена.

Даже когда пользователь обновляет стержень, в следующий раз, когда они играют в игру, мощность их штыря будет сброшена, потому что программа вернется через тот же код, который устанавливает начальное значение.

Мне очень хотелось бы найти способ установить начальное значение и никогда не устанавливать его снова.

ответ

2

Установить только начальное значение, если оно еще не существует для этой конкретной клавиши. Где когда-либо начальное значение, то попробуйте вместо этого:

id object = [[NSUserDefaults standardUserDefaults] objectForKey:@"rodPower"]; 

if (!object) { 
    [[NSUserDefaults standardUserDefaults] setObject:<initialValue> forKey:"rodPower"]; 
} 

Таким образом, если вы уже сохранили значение для этого ключа, начальное значение не будет установлено.

+0

Не забудьте вызвать [[NSUserDefaults standardUserDefaults] synchronize]; для сохранения изменений. –

+1

@NicholasHart Вам не нужно вызывать 'synchronize'. Это будет сделано для вас. – rmaddy

+0

Еще лучше использовать 'NSUserDefaults registerDefaults' для установки значений по умолчанию. Намного легче, чем проверять, существуют ли значения или нет. – rmaddy

Смежные вопросы