1

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

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

4

2 回答 2

1

尝试这个

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

请记住slider.value返回float,因此不能直接将其分配给字符串。这将解决有关将值分配给用户默认值的问题

于 2011-03-10T12:26:21.463 回答
0

在这里,您应该将 float 转换为字符串;

NSString *musicVolume = musicVolumeSlider.value;

在那里,您应该将字符串转换为浮动

theAudio.volume = music_Volume;

或使用

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

字符串的实例

于 2011-03-10T12:24:28.813 回答