Nota: Esta resposta também foi atualizada para o Swift.
Que tal tê-lo em uma linha?
Extensão da resposta de Christopher Rogers - a aceita.
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];
e sim, às vezes você pode precisar synchronize
,
[[NSUserDefaults standardUserDefaults] synchronize];
Eu criei um método para fazer isso,
- (void) clearDefaults {
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];
[[NSUserDefaults standardUserDefaults] synchronize];
}
Swift ?
Com rápido é ainda mais fácil.
extension UserDefaults {
class func clean() {
guard let aValidIdentifier = Bundle.main.bundleIdentifier else { return }
standard.removePersistentDomain(forName: aValidIdentifier)
standard.synchronize()
}
}
E uso :
UserDefaults.clean()