0

私の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];
}
4

1 に答える 1

0

あなたのコードは正しく見えます.iOSのバグではないと確信していますが、これを試してください:

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

この質問もチェックしてください。

于 2013-10-09T12:14:10.930 に答える