つまり、私のアプリは最初にいくつかの標準のデフォルト値を設定します。これらの値は、ユーザーによって上書きされる場合があります。そして、ユーザーが物事を台無しにしたら、それらの設定をアプリのデフォルト値に戻したいと思います。私が理解しているように、アプリのデフォルトはユーザーのデフォルトとは異なる辞書であり、ユーザーのデフォルトはそれらのアプリのデフォルトをオーバーライドするだけです。しかし、ユーザーのデフォルトを削除する方法は見ていません。何か案が?
removeObjectForKey
-を試してください。これにより、設定を削除できます。
このコードを使用
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"MyKey"];
すぐに保存したい場合は同期を忘れないでください
[[NSUserDefaults standardUserDefaults] synchronize];
synchronize-このメソッドは定期的な間隔で自動的に呼び出されます。自動同期を待つことができない場合にのみこのメソッドを使用します(たとえば、アプリケーションが終了する)、または変更を加えていない場合でも、ユーザーのデフォルトをディスク上にあるものに更新する場合。
NSUserDefaults * removeUD = [NSUserDefaults standardUserDefaults];
[removeUD removeObjectForKey:@"shoping"];
[[NSUserDefaults standardUserDefaults]synchronize ];
コピーペーストが簡単なSwiftバージョン:
var idForUserDefaults = "somestupidtext"
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.removeObjectForKey(idForUserDefaults)
userDefaults.synchronize()
または
NSUserDefaults.standardUserDefaults().removeObjectForKey("somestupidtext")
NSUserDefaults.standardUserDefaults().synchronize()
Swift 3 +
UserDefaults.standard.removeObject(forKey: "KEY")
Obj-C
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
Swift 3:
if let bundle = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: bundle)
}
Swift 3.0 code:
UserDefaults.standard.removeObject(forKey: "YOURKEY")
迅速な方法
UserDefaults.standard.removeObject(forKey: "aKey")
UserDefaults.standard.synchronize()
In Swift 4
UserDefaults.standard.removeObject(forKey: "your_key")
UserDefaults.standard.synchronize()