To znaczy, moja aplikacja ustawia na początku kilka standardowych wartości domyślnych. Następnie te wartości mogą zostać nadpisane przez użytkownika. A kiedy użytkownik coś zepsuje, chcę przywrócić te ustawienia do domyślnych wartości mojej aplikacji. Jak rozumiem, ustawienia domyślne aplikacji to inny słownik niż domyślne użytkownika, a ustawienia domyślne użytkownika po prostu zastępują te wartości domyślne aplikacji. Ale nie widziałem metod usuwania ustawień domyślnych użytkownika. Dowolny pomysł?
79
NSUserDefaults * removeUD = [NSUserDefaults standardUserDefaults]; [removeUD removeObjectForKey:@"shoping"]; [[NSUserDefaults standardUserDefaults]synchronize ];
źródło
Szybka wersja do łatwego wklejania kopii:
var idForUserDefaults = "somestupidtext" var userDefaults = NSUserDefaults.standardUserDefaults() userDefaults.removeObjectForKey(idForUserDefaults) userDefaults.synchronize()
lub
NSUserDefaults.standardUserDefaults().removeObjectForKey("somestupidtext") NSUserDefaults.standardUserDefaults().synchronize()
źródło
.synchronize()
„jest niepotrzebne i nie powinno być używane. Developer.apple.com/documentation/foundation/userdefaults/…Aby usunąć określoną wartość KEY:
Swift 3+
UserDefaults.standard.removeObject(forKey: "KEY")
Obj-C
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"]; [[NSUserDefaults standardUserDefaults] synchronize];
Jeśli chcesz zresetować ustawienia UserDefaults / wyczyścić wszystkie dane :
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
Swift 3:
if let bundle = Bundle.main.bundleIdentifier { UserDefaults.standard.removePersistentDomain(forName: bundle) }
źródło
Zaktualizowano dla kodu Swift 3.0:
UserDefaults.standard.removeObject(forKey: "YOURKEY")
źródło
Value of type 'UserDefaults' has no member 'remove'
W Swift 4
UserDefaults.standard.removeObject(forKey: "your_key") UserDefaults.standard.synchronize()
źródło
Szybki sposób
UserDefaults.standard.removeObject(forKey: "aKey") UserDefaults.standard.synchronize()
źródło