Iphone NSUserDefaults麻烦?

时间:2011-03-10 12:15:37

标签: iphone nsuserdefaults uislider uiswitch

在我的应用中,我有一个选项页面。它有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的不兼容类型。”

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

2 个答案:

答案 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