2012-07-16 17 views
5

自分の設定でNSUserDefaultsを使用します。私はアプリを殺すと、NSUserDefaultsのデータの保存は失われます。ここに私のコードです。私は同期を使用している。 まず初期化:NSUserDefaultsを使用してアプリケーションを終了した後に保存されたデータが失われる

if (![userDefaults integerForKey: 
      kORFootageAirPlayModeKey]) 
    { 
     [userDefaults setInteger:TRUE forKey:kORFootageAirPlayModeKey]; 
    } 
    [userDefaults synchronize]; 

読む価値うちのViewControllerに:アクションで

airPlayMode = [[NSUserDefaults standardUserDefaults]integerForKey:kORFootageAirPlayModeKey]; 

セットを:

- (IBAction)changeAirPlayStatus:(id)sender 
{ 

    if (sender) 
    { 
     airPlayMode = [sender tag]; 

     [[NSUserDefaults standardUserDefaults] setInteger:airPlayMode forKey:kORFootageAirPlayModeKey]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 
..... 

}

答えて

1

私が表示されませんその理由。

Simulatorディレクトリをチェックしましたか?Library/Cachesの下にNSUserDefaultsを保存するplistがありますか?それが正しく書かれているか確認してください。

また、setInteger:TRUEを使用しないでください。これは非常に多くのレベルで間違っています。代わりにsetBOOL:YESを使用してください。またはsetInteger:1。

+1

setIntegerをsetBOOLに変更した後、すべて正常になります。だから強制的に変換すると、狂ったようになります。 plistファイルの場所は/ Users/apple/Library/Application Support/iPhone Simulator/5.1/Applications/xxxx-xxxxx-xxxxx/Library/Preferences/com.yourappname.plistです。 –

1

データが確実に保存されるようにするには、-synchronizeapplicationWillTerminate:に、applicationWillResignActive:をアプリケーションの代理人に呼び出す必要があります。

編集:また

、setIntegerの使用に関するsteipeteのコメント:TRUEはaccurate-使用setBoolです:YES代わりに。

関連する問題