3

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

我目前正在做:

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

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

我也尝试添加:

[[NSUserDefaults standardUserDefaults] synchronize];

仍然没有运气。

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

4

1 回答 1

5

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

[[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)
于 2013-05-28T02:39:09.393 回答