6

設定で 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];
    }
.....

}

4

2 に答える 2

2

データを確実に保存する最善の方法は、アプリケーション デリゲートに-synchronizeinapplicationWillTerminate:および inの呼び出しを含めることです。applicationWillResignActive:

編集:

また、setInteger:TRUE の使用に関する steipete のコメントは正確です。代わりに setBool:YES を使用してください。

于 2012-07-16T14:54:45.353 に答える
1

その理由がわかりません。

ライブラリ/キャッシュの下に、NSUserDefaultsを保存するplistがあります。正しく書かれているか確認してください。

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

于 2012-07-16T14:44:20.547 に答える