Nota: Esta respuesta también se ha actualizado para Swift.
¿Qué hay de tenerlo en una línea?
Ampliando la respuesta de @ Christopher Rogers: la aceptada.
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];
y sí, en algún momento puede necesitarlo synchronize
,
[[NSUserDefaults standardUserDefaults] synchronize];
He creado un método para hacer esto,
- (void) clearDefaults {
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];
[[NSUserDefaults standardUserDefaults] synchronize];
}
Swift ?
Con Swift es aún más fácil.
extension UserDefaults {
class func clean() {
guard let aValidIdentifier = Bundle.main.bundleIdentifier else { return }
standard.removePersistentDomain(forName: aValidIdentifier)
standard.synchronize()
}
}
Y uso :
UserDefaults.clean()