2015-07-23 17 views
7

In meiner Anwendung existiert, ich bin ein Schlüssel mit diesem Code zu speichern:Überprüfen Sie, ob NSUserDefaults Schlüssel

func saveKey(){ 
     var xmineSpillere = mineSpillere 
     var defaults = NSUserDefaults.standardUserDefaults() 
     defaults.setObject(xmineSpillere, forKey: "YourKey") 
    } 

Aber wie kann ich überprüfen, ob der Schlüssel vorhanden ist? Ich möchte den Code etwas wie folgt:

if key("YourKey") exists { 
    println("key exists") 
} 
else { 
    println("does not exist") 
} 

Wie kann ich so etwas in Swift tun?

Antwort

6

Fand heraus, mich, Code:

if (NSUserDefaults.standardUserDefaults().objectForKey("YourKey") != nil) { 
      println("key exist") 
     } 
18

Zunächst einmal jedes Mal, wenn jeder zu NSUserDefaults speichern Sie die synchronize() Methode schreibt alle Änderungen an den persistenten Domänen auf der Festplatte und aktualisiert alle unmodifizierten persistent Domains aufrufen müssen zu was ist auf der Festplatte.

func saveKey(){ 
    var xmineSpillere = mineSpillere 
    var defaults = NSUserDefaults.standardUserDefaults() 
    defaults.setObject(xmineSpillere, forKey: "YourKey") 
    defaults.synchronize() 
} 

Die synchronize Methode wird in regelmäßigen Abständen automatisch aufgerufen wird, diese Methode nur verwenden, wenn Sie nicht für die automatische Synchronisation (zum Beispiel, wenn Ihre Anwendung im Begriff ist, zu verlassen) warten können, oder wenn Sie wollen, dass die Aktualisierung Benutzer ist standardmäßig auf dem Datenträger, obwohl Sie keine Änderungen vorgenommen haben.

Dann können Sie einen beliebigen Wert auf folgende Weise erreichen:

if let key = NSUserDefaults.standardUserDefaults().objectForKey("YourKey"){ 
    // exist 
} 
else { 
    // not exist 
} 

ich diese Hilfe Sie hoffen.

+0

habe ich eine Frage Sieger. Der "Schlüssel", den ich habe, speichert Daten von UITableView, also wie kann ich es als Feld speichern, und wie kann ich es als ein Feld lesen? Wenn ich den Schlüssel als Array lese, möchte ich ihn als "var mineSpillere" bezeichnen. –

+0

Probieren Sie diese http://stackoverflow.com/questions/25179668/how-to-save-and-read-array-of-array-in-nsusersdefaults-in-swift –

+0

Der Wert ist im Speicher und kann auch wenn abgerufen werden Sie rufen nicht "synchronisieren" auf. –

0

Swift 3+

if let key = UserDefaults.standard.object(forKey: "Key"){ 
    // exist 
} else { 
    // not exist 
} 
0

Hinzufügen dieser Erweiterung zu UserDefaults Wille hilft:

extension UserDefaults { 
    func contains(key: String) -> Bool { 
     return UserDefaults.standard.object(forKey: key) != nil 
    } 
} 

können Sie überprüfen, ob Ihr Schlüssel existieren mit:

if UserDefaults.contains(key: "YourKey") { 
    print("Key exist") 
} else { 
    print("Does not exist") 
} 
Verwandte Themen