web-dev-qa-db-fra.com

Comment supprimer une valeur par défaut d'utilisateur dans NSUserDefaults?

C'est-à-dire que mon application définit au début certaines valeurs standard par défaut. Ensuite, ces valeurs peuvent être remplacées par l'utilisateur. Et lorsque l'utilisateur gâche les choses, je veux redonner à ces paramètres les valeurs par défaut de mon application. Si je comprends bien, les valeurs par défaut de l'application sont un dictionnaire différent de celui par défaut de l'utilisateur, et les valeurs par défaut de l'utilisateur remplacent simplement ces valeurs par défaut de l'application. Mais je n'ai pas vu de méthodes pour supprimer les valeurs par défaut de l'utilisateur. Une idée?

71
HelloMoon

Essayez removeObjectForKey - qui devrait vous permettre de supprimer une préférence.

131
fbrereto

Utilisez ce code

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"MyKey"];

n'oubliez pas de synchroniser si vous souhaitez enregistrer immédiatement

[[NSUserDefaults standardUserDefaults] synchronize];

Référence de classe NSUserDefaults

synchronize - Cette méthode est automatiquement invoquée à intervalles périodiques, utilisez cette méthode uniquement si vous ne pouvez pas attendre la synchronisation automatique (par exemple, si votre application concerne pour quitter) ou si vous souhaitez mettre à jour les valeurs par défaut de l'utilisateur sur ce qui se trouve sur le disque même si vous n'avez apporté aucune modification.

94
Rajneesh071
NSUserDefaults * removeUD = [NSUserDefaults standardUserDefaults];
[removeUD removeObjectForKey:@"shoping"];
[[NSUserDefaults standardUserDefaults]synchronize ];
8
Mohit

Version Swift pour copier-coller facilement:

var idForUserDefaults = "somestupidtext"
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.removeObjectForKey(idForUserDefaults)
userDefaults.synchronize()

ou

NSUserDefaults.standardUserDefaults().removeObjectForKey("somestupidtext")
NSUserDefaults.standardUserDefaults().synchronize()
8
Esqarrouth

Pour supprimer une valeur KEY spécifique:

Swift 3 +

UserDefaults.standard.removeObject(forKey: "KEY")

Obj-C

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];

Si vous devez réinitialiser UserDefaults/Clear All datas:

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

Swift 3:

if let bundle = Bundle.main.bundleIdentifier {
    UserDefaults.standard.removePersistentDomain(forName: bundle)
}
6
Lal Krishna

Mis à jour pour Swift 3.0 code:

UserDefaults.standard.removeObject(forKey: "YOURKEY")

4
kbunarjo

manière rapide

UserDefaults.standard.removeObject(forKey: "aKey")
UserDefaults.standard.synchronize()
0
Basir Alam

Dans Swift 4

    UserDefaults.standard.removeObject(forKey: "your_key")
    UserDefaults.standard.synchronize()
0