Wie kann ich die nsuserdefault
Werte in swift automatisch löschen? Ich habe das schon ausprobiert, aber es funktioniert nicht für mich ...Wie NSUserDefault-Werte in swift automatisch löschen?
Antwort
überprüfen, wie viele Schlüssel bereits
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
add nur ein weiterer Schlüssel
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey1")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey2")
überprüfen, wie viele Tasten sind bereits wieder gespeichert gespeichert sind (+2)
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
jetzt erstellen eine Schleife, um Ihr Objekt für die Schlüssel zu entfernen
for key in NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys {
NSUserDefaults.standardUserDefaults().removeObjectForKey(key.description)
}
überprüfen, wie viele Tasten Sie haben wieder
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
Update: Xcode 7.2.1 • Swift 2.1.1 (beachten Sie NSUserDefaults nicht mehr auf dem Spielplatz nicht funktioniert, so dass es getestet werden muss, ein reales Projekt)
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)
'.array' wird nicht benötigt –
Vielen Dank, ja es funktioniert in objective-c, aber ich brauche in swift ..... –
Sie sind willkommen –
Es gibt keine "auto clear". Holen Sie sich einfach alle vorhandenen NSUserDefaults-Schlüssel und setzen Sie sie alle auf null.
Um alle Schlüssel zu erhalten, erhalten Sie die NSUserDefaults dictionaryRepresentation
und erhalten Sie keys
(allKeys
in Objective-C).
Wie machst du das schnell? – DrPatience
Das schnelle Gegenstück für Objective-c-Code ist dies
let appDomain = NSBundle.mainBundle().bundleIdentifier!
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)
Swift 3,0
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
Dies sollte die ausgewählte Antwort sein – jakev
defaults.setObject(nil, forKey: "userEmail")
, das zu tun, setzen Sie gleich Null, so dass Sie klare
dies funktioniert, aber es gibt eine Methode für das mit dem Namen removeObjectForKey –
@LeoDabus, Sie Recht, aber RemoveObjectForKey wird nicht mit allen funktionieren, wie das Ersetzen oder Entfernen von UserAgent zur Laufzeit. – ZAFAR007
Swift 3.0 Lösung
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
Also, wenn Sie mit Swift, warum ist Ihr Code in Objective-C? Hmmm? – matt