web-dev-qa-db-fra.com

Enregistrer le dictionnaire dans les valeurs utilisateur dans Swift 3 avec xcode 8

J'utilise le code suivant pour enregistrer un objet dans UserDefaults (anciennement NSUserDefaults) à l'aide de xcode 8:

let defaults = UserDefaults.standard()
defaults.set(someObject, forKey: "someObject")
print(defaults.object(forKey: "someObject"))

someObject est un dictionnaire et je cours sur le simulateur.

Pour une raison quelconque, cela n'enregistre pas la valeur et "nil" est imprimé. Vous vous demandez si c'est un problème de simulateur.

56
alionthego

Ce problème semble être dû au fait que deux versions de xcode/simulator sont installées.

Ce qui a fonctionné pour moi a été la désinstallation de xcode 7 et le maintien de xcode 8 bêta sur mon système. Vider la corbeille, réinitialiser le simulateur et le lancer. J'ai également redémarré mon ordinateur.

Après avoir suivi ces étapes, le simulateur peut enregistrer sur UserDefaults.

10
alionthego

Pour Swift 3

UserDefaults.standard.setValue(token, forKey: "user_auth_token")
print("\(UserDefaults.standard.value(forKey: "user_auth_token")!)")
78
Jan

Travailler parfaitement ici avec ça ..!

    let dict:[String:String] = ["key":"Hello"]
    UserDefaults.standard.set(dict, forKey: "dict")
    let result = UserDefaults.standard.value(forKey: "dict")
    print(result!)
    // Output -> { key:hello;}
41
Bishow Gurung

Il s'agit du problème non documenté mais connu suivant lequel NSUserDefaults/UserDefualts ne fonctionne pas dans le simulateur iOS 10 si le simulateur iOS 8/9 a déjà été exécuté.

En redémarrant votre Mac et en passant directement à XCode 8, le simulateur iOS 10 résoudra ce problème.

Voir aussi: Pourquoi mon application ne s'exécute-t-elle pas dans XCode 8 beta (8S128d)

12
Richard

Swift 4: -

let defaults = UserDefaults.standard

let dictionary: [String:String] = ["key":"Value"]  //Dictionary which you want to save

defaults.setValue(dictionary, forKey: "DictValue") //Saved the Dictionary in user default

let dictValue = defaults.value(forKey: "DictValue") //Retrieving the value from user default 

print(dictValue)  // Printing the value 
3
Sandeep Vishwakarma