如何删除NSUserDefaults中的用户默认值?

时间:2009-08-27 16:53:37

标签: iphone cocoa-touch uikit

即,我的应用程序在开头设置了一些标准默认值。然后,这些值可能被用户覆盖。当用户搞砸了,我想将这些设置设置回我的应用默认值。据我了解,应用程序默认值是与用户默认值不同的字典,用户默认值只是覆盖那些应用程序默认值。但我还没有看到删除用户默认值的方法。有什么想法吗?

8 个答案:

答案 0 :(得分:130)

尝试removeObjectForKey - 这可以让您删除偏好。

答案 1 :(得分:92)

使用此代码

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"MyKey"];

如果您想立即保存,请不要忘记同步

[[NSUserDefaults standardUserDefaults] synchronize];

NSUserDefaults Class Reference

同步 - 此方法会定期自动调用,只有在您无法等待自动同步时才会使用此方法(例如,如果您的应用程序即将退出)或者您希望即使您没有进行任何更改,也会将用户默认值更新为磁盘上的内容。

答案 2 :(得分:8)

NSUserDefaults * removeUD = [NSUserDefaults standardUserDefaults];
[removeUD removeObjectForKey:@"shoping"];
[[NSUserDefaults standardUserDefaults]synchronize ];

答案 3 :(得分:8)

Swift版本,便于复制粘贴:

var idForUserDefaults = "somestupidtext"
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.removeObjectForKey(idForUserDefaults)
userDefaults.synchronize()

NSUserDefaults.standardUserDefaults().removeObjectForKey("somestupidtext")
NSUserDefaults.standardUserDefaults().synchronize()

答案 4 :(得分:5)

要删除特定的KEY值:

Swift 3 +

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];

<强>的OBJ-C

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

如果您需要重置UserDefaults / Clear All datas

if let bundle = Bundle.main.bundleIdentifier {
    UserDefaults.standard.removePersistentDomain(forName: bundle)
}

斯威夫特3:

spring.thymeleaf.check-template-location=true
spring.thymeleaf.prefix=classpath:/mails/
spring.thymeleaf.excluded-view-names=
spring.thymeleaf.view-names=
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=true

答案 5 :(得分:4)

针对Swift 3.0代码进行了更新:

UserDefaults.standard.removeObject(forKey: "YOURKEY")

答案 6 :(得分:1)

在Swift 4中

    UserDefaults.standard.removeObject(forKey: "your_key")
    UserDefaults.standard.synchronize()

答案 7 :(得分:0)

迅捷

UserDefaults.standard.removeObject(forKey: "aKey")
UserDefaults.standard.synchronize()