2015-07-23 27 views
7

Nella mia domanda, io sono il risparmio di una chiave utilizzando questo codice:Verificare se esiste chiave NSUserDefaults

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

ma come faccio a verificare se la chiave esiste? Voglio il codice qualcosa di simile a questo:

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

Come posso fare qualcosa di simile in Swift?

risposta

6

scoperto me stesso, il codice:

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

Prima di tutto ogni volta che si salva un altro per NSUserDefaults è necessario chiamare il metodo synchronize() al scrive eventuali modifiche ai domini persistenti su disco e aggiorna tutti i domini persistenti non modificati a ciò che è su disco.

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

Il metodo synchronize viene richiamato automaticamente a intervalli periodici, utilizzare questo metodo solo se non è possibile attendere la sincronizzazione automatica (per esempio, se l'applicazione è in procinto di uscire) o se si desidera aggiornare il l'utente ha come impostazione predefinita ciò che è su disco anche se non hai apportato alcuna modifica.

Poi si può raggiungere qualsiasi valore nel modo seguente:

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

Spero che questo aiuto.

+0

Ho una domanda Vincitore. La "chiave" che ho salvato i dati da UITableView, quindi come posso salvarlo come array, e come posso leggerlo come un array? Quando leggo la chiave come array, voglio metterla come "var mineSpillere". –

+0

Prova questo http://stackoverflow.com/questions/25179668/how-to-save-and-read-array-of-array-in-nsuserdefaults-in-swift –

+0

Il valore è in memoria e può essere recuperato anche se non si chiama 'synchronize'. –

0

Swift 3+

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

L'aggiunta di questa estensione per UserDefaults volontà aiuta:

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

È possibile verificare se la chiave esiste con:

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