我在我的應用程序設置多個用戶的默認值:加載用戶默認值4.0
花絮ON/OFF 啓動提示ON/OFF 遊戲音樂ON/OFF 的iPod音樂ON/OFF 音效ON/OFF 重置所有娃娃ON/OFF
當我的應用程序進入backgound(在OS 4.0),我saveDefaults:方法從applicationWillResignActive叫:(UIApplication的*)方法。
然後在applicationWillEnterForeground:方法中,我再次加載我的用戶默認值。然後我調用一個啓動MenuMusic的方法。
使用相當簡單的保存默認的方法,應該工作:
- (void)saveGameDefaults {
[[NSUserDefaults standardUserDefaults] setObject:(NSString *)myDoll.currentDoll forKey:@"DollName"];
[[NSUserDefaults standardUserDefaults] setInteger:[gameState intValue] forKey:@"GameState"];
[[NSUserDefaults standardUserDefaults] setInteger:[startScreen intValue] forKey:@"StartScreen"];
[[NSUserDefaults standardUserDefaults] setBool:snapShots forKey:@"SnapShots"];
[[NSUserDefaults standardUserDefaults] setBool:resetDolls forKey:@"Reset"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
這裏是我的負載的默認方法的一小部分:
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"GameState"] == nil) gameState = [NSNumber numberWithInt:MENU_VIEW];
else gameState = [[NSUserDefaults standardUserDefaults] objectForKey:@"GameState"];
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"StartScreen"] == nil) startScreen = [NSNumber numberWithInt:SHOW_START_SCREEN];
else startScreen = [[NSUserDefaults standardUserDefaults] objectForKey:@"StartScreen"];
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"GameSound"] == nil) gameSound = [NSNumber numberWithInt:SOUNDS_ON];
else gameSound = [[NSUserDefaults standardUserDefaults] objectForKey:@"GameSound"];
}
好像,不更新默認設置或當它從後臺返回時可用於應用程序。我通過直接切換到iPhone設置,更改設置,然後通過雙擊主屏幕按鈕並選擇我的應用程序直接切換回到後臺。但是,如果我再次退出並重新進入,它將讀取已設置的新設置。
例如: 1.我啓用了音樂,然後啓動應用程序。音樂正在菜單中播放。 2.我雙擊主頁按鈕並選擇我的設置應用程序&將菜單音樂設置更改爲NO。 3.雙擊主頁按鈕並切換回遊戲。音樂仍在播放。 4.再次雙擊房屋並返回設置應用程序。菜單音樂仍然設置爲NO。 5.第二次切換回我的應用程序,現在音樂不再播放。
其他任何人在應用程序在後臺時更新用戶設置有問題?
預先感謝馬克 -