我正在编写一个OS X应用程序。我正在尝试清除NSUserDefaults。
我现在正在做:
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];
但是它不起作用,即当我打印用户默认值时,所有键值对仍然存在。
我也尝试过添加:
[[NSUserDefaults standardUserDefaults] synchronize];
仍然没有运气。
有人可以帮忙吗?提前谢谢!
答案 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)