removePersistentDomainForName不适用于NSUserDefaults

时间:2013-02-22 07:13:16

标签: xcode nsuserdefaults

我正在编写一个OS X应用程序。我正在尝试清除NSUserDefaults。

我现在正在做:

[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];

但是它不起作用,即当我打印用户默认值时,所有键值对仍然存在。

我也尝试过添加:

[[NSUserDefaults standardUserDefaults] synchronize];

仍然没有运气。

有人可以帮忙吗?提前谢谢!

1 个答案:

答案 0 :(得分:5)

似乎removePersistentDomainForName:在OS X 10.8 上无效。此外,这些东西也不起作用:

[[NSUserDefaults standardUserDefaults] setPersistentDomain:@{} forName:[NSBundle mainBundle].bundleIdentifier];

[[NSUserDefaults standardUserDefaults] setValuesForKeysWithDictionary:@{}];

要解决此问题,您可以为域设置任意键值对,然后删除该对:

[[NSUserDefaults standardUserDefaults] setPersistentDomain:@{@"": @""} forName:[NSBundle mainBundle].bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@""];

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] persistentDomainForName:[NSBundle mainBundle].bundleIdentifier]); // => (null)