Iphone NSUserDefaults Проблема? - PullRequest
1 голос
/ 10 марта 2011

В моем приложении у меня есть страница настроек. Он имеет 3 вещи, которые вы можете изменить: переключатель для перевернутых элементов управления (это стрелялка), ползунок громкости для уровня эффектов и ползунок громкости для уровня музыки. Мне нужна помощь с парой вещей. Я новичок (3 недели) в цели c, и мне нужна помощь с хранением NSUserDefaults. У меня вроде есть код для ползунков громкости, но он не работает. Я также понятия не имею, что делать с выключателем. Мне нужно проверить эти данные позже во время игры. Вот код, который я пробовал OPTIONS.m

-(IBAction)musicVolumeChanged {

    NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
    NSString *musicVolume = musicVolumeSlider.value;
    //theAudio.volume = musicVolume;
    [userPreferences setObject:musicVolume forKey:@"musicVolume"];
}

-(IBAction)effectsVolumeChanged {

    NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
    NSString *effectsVolume = effectsVolumeSlider.value;
    //theAudio.volume = effectsVolume;
    [userPreferences setObject:effectsVolume forKey:@"effectsVolume"];

}

А затем для доступа к значениям во время игры у меня есть: Igunner.m

NSString *effects_Volume = [[NSUserDefaults standardUserDefaults]
                                             stringForKey:@"effectsVolume"];
theAudio.volume = effects_Volume;
[theAudio play]; 

А затем для громкости музыки у меня есть:

NSString *music_Volume = [[NSUserDefaults standardUserDefaults]
                                             stringForKey:@"musicVolume"];
theAudio.volume = music_Volume;
[theAudio play];

У меня есть одна ошибка в каждом примере кода, показанном выше. для назначения значений NSUserDefaults, я получаю ошибку, когда я назначаю значение ползунка для строки. «Несовместимые типы в инициализации» и для получения значений я получаю ошибки «Несовместимый тип для аргумента 1 setVolume.»

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

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Попробуйте это

NSString *effectsVolume = [NSString stringWithFormat:@"%f",effectsVolumeSlider.value];

Помните, slider.value возвращает float, поэтому его нельзя присвоить строке напрямую. Это решит проблему с назначением значений по умолчанию для пользователя

0 голосов
/ 10 марта 2011

здесь вы должны привести число с плавающей точкой к строке;

NSString *musicVolume = musicVolumeSlider.value;

там, где вы должны бросить строку, чтобы плавать

theAudio.volume = music_Volume;

ИЛИ использовать

[[NSUserDefaults standardUserDefaults]setFloat:musicVolume forKey:@"musicVolume"];

instand из строки

...