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的不兼容类型”。

请告诉我我做错了什么,如果你知道,请帮助我了解存储和检索的开关状态。

+1

您确定audio.volume是NSString吗?我非常怀疑它。但你不告诉我们音频是什么,所以我不能给你解决方案。 – 2011-03-10 12:22:21

在这里,您应该将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所以它不能直接分配给一个字符串。 这将解决有关将值分配给用户默认设置的问题