web-dev-qa-db-fra.com

Vérifier si la clé NSUserDefaults existe

Dans mon application, je sauvegarde une clé en utilisant ce code:

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

Mais comment puis-je vérifier si la clé existe? Je veux le code quelque chose comme ça:

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

Comment puis-je faire quelque chose comme ça dans Swift?

7
Eri-Sklii

Tout d'abord, chaque fois que vous enregistrez une variable dans NSUserDefaults, vous devez appeler la méthode synchronize() pour écrire les modifications apportées aux domaines persistants sur le disque et mettre à jour tous les domaines persistants non modifiés sur ce qui est sur le disque.

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

La méthode synchronize est automatiquement appelée à intervalles réguliers. Utilisez cette méthode uniquement si vous ne pouvez pas attendre la synchronisation automatique (par exemple, si votre application est sur le point de quitter) ou si vous souhaitez mettre à jour les valeurs utilisateur par défaut sur ce qui est sur le disque, même si vous n'avez apporté aucun changement.

Ensuite, vous pouvez atteindre n'importe quelle valeur de la manière suivante:

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

J'espère que cela vous aidera.

20
Victor Sigler

Découvert moi-même, code:

if (NSUserDefaults.standardUserDefaults().objectForKey("YourKey") != nil) {
            println("key exist")
        }
7
Eri-Sklii

Ajouter cette extension à UserDefaults aidera:

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

Vous pouvez vérifier si votre clé existe avec:

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

Swift 3+

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