Comment puis-je effacer automatiquement les valeurs nsuserdefault
dans swift? J'ai déjà essayé ça mais ça ne marche pas pour moi ...
[[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];
vérifier combien de clés sont déjà stockées
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
ajouter juste une autre clé
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey1")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey2")
vérifier combien de clés sont déjà stockées à nouveau (+2)
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
créez maintenant une boucle pour supprimer votre objet pour les clés
for key in NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys {
NSUserDefaults.standardUserDefaults().removeObjectForKey(key.description)
}
vérifiez combien de clés vous avez à nouveau
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
mise à jour: Xcode 7.2.1 • Swift 2.1.1 (note NSUserDefaults ne fonctionne plus dans la cour de récréation, donc il doit être testé dans un vrai projet)
print(Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys).count)
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey1")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey2")
print(Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys).count)
for key in Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys) {
NSUserDefaults.standardUserDefaults().removeObjectForKey(key)
}
print(Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys).count)
Le Swift contrepartie pour votre code objectif-c est le suivant
let appDomain = NSBundle.mainBundle().bundleIdentifier!
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)
Swift 3.
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
Solution Swift 3.
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
defaults.setObject(nil, forKey: "userEmail")
en faisant ça, vous mettez zéro, donc vous effacez
Il n'y a pas de "suppression automatique". Obtenez simplement toutes les clés NSUserDefaults existantes et définissez-les toutes sur zéro.
Pour obtenir toutes les clés, récupérez NSUserDefaults dictionaryRepresentation
et récupérez son keys
(allKeys
dans Objective-C).