私のiPhoneアプリケーションでは、またはのいずれremoveObjectForKey:@"bla"
かsetObject:nil forKey:@"bla"
を使用してキーを削除しています[NSUserDefaults standardUserDefaults]
。
ただし、新しいView ControllerをNavigation Controllerスタックにプッシュする直前にこれを行うと、デフォルトが更新されません。
viewDidAppear
次に表示されるプッシュされたコントローラーでそれを行うと、synchronize
呼び出しは期待どおりに機能します。
この振る舞いがわかりません。誰かが同様の問題を抱えたことはありますか?
要約:新しい VC をプッシュする直前に削除 + 同期: NSUserDefaults は同じままです。削除+同期するviewDidAppear
と機能します。
も使用してみsetPersistentDomain:forName:
ましたが、結果は同じでした..
編集:コードは次のとおりです。
+ (void)deleteDefaultEntries
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"key1"];
[defaults removeObjectForKey:@"key2"];
[defaults removeObjectForKey:@"key3"];
[defaults removeObjectForKey:@"key4"];
[defaults synchronize];
}