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.
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.
Pour Swift 3
UserDefaults.standard.setValue(token, forKey: "user_auth_token")
print("\(UserDefaults.standard.value(forKey: "user_auth_token")!)")
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;}
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)
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