Es decir, mi aplicación establece algunos valores predeterminados estándar al principio. Entonces, esos valores pueden ser anulados por el usuario. Y cuando el usuario estropea las cosas, quiero volver a establecer esa configuración en los valores predeterminados de mi aplicación. Según tengo entendido, los valores predeterminados de la aplicación son un diccionario diferente a los valores predeterminados del usuario, y los valores predeterminados del usuario simplemente anulan los valores predeterminados de la aplicación. Pero no he visto métodos para eliminar los valores predeterminados del usuario. ¿Alguna idea?
79

NSUserDefaults * removeUD = [NSUserDefaults standardUserDefaults]; [removeUD removeObjectForKey:@"shoping"]; [[NSUserDefaults standardUserDefaults]synchronize ];fuente
Versión rápida para copiar y pegar fácilmente:
var idForUserDefaults = "somestupidtext" var userDefaults = NSUserDefaults.standardUserDefaults() userDefaults.removeObjectForKey(idForUserDefaults) userDefaults.synchronize()o
NSUserDefaults.standardUserDefaults().removeObjectForKey("somestupidtext") NSUserDefaults.standardUserDefaults().synchronize()fuente
.synchronize()"es innecesario y no debe utilizarse. Developer.apple.com/documentation/foundation/userdefaults/…Para eliminar un valor CLAVE específico:
Swift 3+
UserDefaults.standard.removeObject(forKey: "KEY")Obj-C
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"]; [[NSUserDefaults standardUserDefaults] synchronize];Si necesita restablecer los valores predeterminados de usuario / borrar todos los datos :
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];Swift 3:
if let bundle = Bundle.main.bundleIdentifier { UserDefaults.standard.removePersistentDomain(forName: bundle) }fuente
Actualizado para el código Swift 3.0:
UserDefaults.standard.removeObject(forKey: "YOURKEY")fuente
Value of type 'UserDefaults' has no member 'remove'En Swift 4
UserDefaults.standard.removeObject(forKey: "your_key") UserDefaults.standard.synchronize()fuente
Manera rápida
UserDefaults.standard.removeObject(forKey: "aKey") UserDefaults.standard.synchronize()fuente