/ / NSUserDefaultsの同期は効果がありません-iphone、ios、nsuserdefaults

NSUserDefaultsを同期させると効果はありません - iphone、ios、nsuserdefaults

私のiPhoneアプリケーションでは、次のいずれかを使用してキーを削除しています removeObjectForKey:@"bla" または setObject:nil forKey:@"bla"[NSUserDefaults standardUserDefaults].

しかしながら、新しいView ControllerをNavigation Controllerスタックにプッシュする直前に行うと、デフォルトは更新されません。

でやれば viewDidAppear 表示されたプッシュされたコントローラーで、 synchronize 呼び出しは期待されることを行います。

私はこの振る舞いを理解していません。誰かが同様の問題を抱えたことはありますか?

概要: 新しいVCをプッシュする直前にdelete + synchronize:NSUserDefaultsは同じままです。削除+同期 viewDidAppear それは動作します。

私はまた、 setPersistentDomain:forName:、しかし結果は同じだった..

編集:これがコードです:

+ (void)deleteDefaultEntries
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults removeObjectForKey:@"key1"];
[defaults removeObjectForKey:@"key2"];
[defaults removeObjectForKey:@"key3"];
[defaults removeObjectForKey:@"key4"];

[defaults synchronize];
}

回答:

回答№1は0

あなたのコードは正しく見えます。「確かに」iOSのバグではありませんが、これを試します

[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"example key"]

またチェックアウト この質問.