59 votes

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

J'utilise le code suivant pour enregistrer un objet dans UserDefaults (précédemment 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.

81voto

Jan Points 511

Pour Swift 3

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

43voto

Bishow Gurung Points 1412

Fonctionne 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;}
 

13voto

Richard Points 949

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 fonctionne-t-elle pas dans XCode 8 beta (8S128d)

10voto

alionthego Points 2051

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.

8voto

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 
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X