Iphone NSUserDefaults麻烦?
问题描述:
在我的应用程序中,我有一个选项页面。它有三件事情可以改变:一个用于反转控制的开关(它是一个射击游戏),一个音量滑块,以及一个音量滑块。我需要一些帮助。我是新的(3周)到目标c,我需要帮助存储NSUserDefaults。我有种体积滑块的代码,但它不起作用。我也不知道该如何处理交换机。我也需要在比赛后期检查这些数据。这是我曾尝试 OPTIONS.mIphone NSUserDefaults麻烦?
-(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的不兼容类型”。
请告诉我我做错了什么,如果你知道,请帮助我了解存储和检索的开关状态。
答
在这里,您应该将float浮动到字符串;
NSString *musicVolume = musicVolumeSlider.value;
athere你应该投串浮动
theAudio.volume = music_Volume;
或使用
[[NSUserDefaults standardUserDefaults]setFloat:musicVolume forKey:@"musicVolume"];
instand串
答
试试这个
NSString *effectsVolume = [NSString stringWithFormat:@"%f",effectsVolumeSlider.value];
记住slider.value
返回float
所以它不能直接分配给一个字符串。 这将解决有关将值分配给用户默认设置的问题
您确定audio.volume是NSString吗?我非常怀疑它。但你不告诉我们音频是什么,所以我不能给你解决方案。 – 2011-03-10 12:22:21