0

在我的 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];
}
4

1 回答 1

0

您的代码看起来不错,我确定这不是 iOS 错误,但试试这个:

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

也看看这个问题

于 2013-10-09T12:14:10.930 回答