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?
Essayez removeObjectForKey
- qui devrait vous permettre de supprimer une préférence.
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.
NSUserDefaults * removeUD = [NSUserDefaults standardUserDefaults];
[removeUD removeObjectForKey:@"shoping"];
[[NSUserDefaults standardUserDefaults]synchronize ];
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()
Swift 3 +
UserDefaults.standard.removeObject(forKey: "KEY")
Obj-C
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
Swift 3:
if let bundle = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: bundle)
}
Mis à jour pour Swift 3.0 code:
UserDefaults.standard.removeObject(forKey: "YOURKEY")
manière rapide
UserDefaults.standard.removeObject(forKey: "aKey")
UserDefaults.standard.synchronize()
Dans Swift 4
UserDefaults.standard.removeObject(forKey: "your_key")
UserDefaults.standard.synchronize()