在我的应用中,我有一个选项页面。它有3件你可以改变的东西:一个用于倒置控制的开关(它是一个射击游戏),一个用于效果等级的音量滑块,以及一个用于音乐等级的音量滑块。我需要一些帮助。我是目标c的新人(3周),我需要帮助存储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,我在为字符串分配滑块值时收到错误。 “初始化中的不兼容类型”,并且为了检索值,我得到错误“setVolume的参数1的不兼容类型。”
请告诉我我做错了什么,如果你知道的话,请帮我解决存储和检索的开关状态。
答案 0 :(得分:1)
试试这个
NSString *effectsVolume = [NSString stringWithFormat:@"%f",effectsVolumeSlider.value];
请记住slider.value
返回float
,因此无法直接将其分配给字符串。
这将解决有关将值分配给用户默认值
答案 1 :(得分:0)
在这里你应该把float转换成字符串;
NSString *musicVolume = musicVolumeSlider.value;
你应该将字符串转换为浮动
theAudio.volume = music_Volume;
或使用
[[NSUserDefaults standardUserDefaults]setFloat:musicVolume forKey:@"musicVolume"];
字符串
的instand