同步NSUserDefaults无效

时间:2013-10-09 08:04:19

标签: iphone ios nsuserdefaults

在我的iPhone应用程序中,我使用removeObjectForKey:@"bla"中的setObject:nil forKey:@"bla"[NSUserDefaults standardUserDefaults]删除密钥。

然而,当我在将新视图控制器推入导航控制器堆栈之前执行此操作时,默认设置不会更新。

如果我在显示的推送控制器中的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];
}

1 个答案:

答案 0 :(得分:0)

您的代码看起来正确,我确定这不是iOS错误,但请尝试以下方法:

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

另请查看this question