2011-03-10 104 views
1

在我的應用程序中,我有一個選項頁面。它有三件事情可以改變:一個用於反轉控制的開關(它是一個射擊遊戲),一個音量滑塊,以及一個音量滑塊。我需要一些幫助。我是新的(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

回答

0

在這裏,您應該將float浮動到字符串;

NSString *musicVolume = musicVolumeSlider.value; 

athere你應該投串浮動

theAudio.volume = music_Volume; 

或使用

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

instand串

1

試試這個

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

記住slider.value返回float所以它不能直接分配給一個字符串。 這將解決有關將值分配給用戶默認設置的問題