2015-01-08 13 views

Antwort

37

ü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) 
+1

'.array' wird nicht benötigt –

+0

Vielen Dank, ja es funktioniert in objective-c, aber ich brauche in swift ..... –

+0

Sie sind willkommen –

1

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).

+1

Wie machst du das schnell? – DrPatience

68

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) 
+11

Dies sollte die ausgewählte Antwort sein – jakev

6
defaults.setObject(nil, forKey: "userEmail") 

, das zu tun, setzen Sie gleich Null, so dass Sie klare

+3

dies funktioniert, aber es gibt eine Methode für das mit dem Namen removeObjectForKey –

+0

@LeoDabus, Sie Recht, aber RemoveObjectForKey wird nicht mit allen funktionieren, wie das Ersetzen oder Entfernen von UserAgent zur Laufzeit. – ZAFAR007

7

Swift 3.0 Lösung

let appDomain = Bundle.main.bundleIdentifier! 
UserDefaults.standard.removePersistentDomain(forName: appDomain)