即,我的应用程序在开头设置了一些标准默认值。然后,这些值可能被用户覆盖。当用户搞砸了,我想将这些设置设置回我的应用默认值。据我了解,应用程序默认值是与用户默认值不同的字典,用户默认值只是覆盖那些应用程序默认值。但我还没有看到删除用户默认值的方法。有什么想法吗?
答案 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)
Swift 3 +
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];
<强>的OBJ-C 强>
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
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()