How to delete a user default value in NSUserDefaults?

夙愿已清 提交于 2019-12-17 17:42:15

问题


I.e., my app sets some standard default values at the beginning. Then those values may get overridden by the user. And when the user messes things up, I want to set those settings back to my app default values. As I understand it, the app defaults are a different dictionary than the user defaults, and the user defaults just override those app defaults. But I haven't seen methods for deleting the user defaults. Any idea?


回答1:


Try removeObjectForKey -- that should give you the ability to remove a preference.




回答2:


Use this code

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

dont forget to synchronize if you want to save immediately

[[NSUserDefaults standardUserDefaults] synchronize];

NSUserDefaults Class Reference

synchronize - This method is automatically invoked at periodic intervals, use this method only if you cannot wait for the automatic synchronization (for example, if your application is about to exit) or if you want to update the user defaults to what is on disk even though you have not made any changes.




回答3:


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



回答4:


Swift version for easy copy pasting:

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

or

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



回答5:


To remove a specific KEY value:

Swift 3+

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

Obj-C

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

If you need to reset UserDefaults/Clear All datas:

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

Swift 3:

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



回答6:


Updated for Swift 3.0 code:

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




回答7:


In Swift 4

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



回答8:


Swift way

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


来源:https://stackoverflow.com/questions/1342348/how-to-delete-a-user-default-value-in-nsuserdefaults

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!