私の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"]
またチェックアウト この質問.