Sauvegarder le dictionnaire dans userdefaults dans swift 3 avec xcode 8
j'utilise le code suivant pour enregistrer un objet à UserDefaults (précédemment Nsuerdefaults) en utilisant 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 ne sauve pas la valeur et " nil " est imprimé. Je me demande si c'est un problème de simulateur.
5 réponses
Pour Swift 3
UserDefaults.standard.setValue(token, forKey: "user_auth_token")
print("\(UserDefaults.standard.value(forKey: "user_auth_token")!)")
fonctionne parfaitement ici avec ceci..!
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 que Nsuerdefaults/UserDefualts ne fonctionne pas dans le simulateur iOS 10 si le simulateur iOS 8/9 a déjà été utilisé.
redémarrer votre Mac et aller directement sur XCode 8, ios 10 simulator va corriger ce problème.
Voir aussi: Pourquoi ne pas en faire l'une de mes applications s'exécutent dans XCode beta 8 (8S128d)
ce problème semble être causé par l'installation de deux versions de Xcode/simulateur.
ce qui a fonctionné pour moi était de désinstaller xcode 7 et juste garder Xcode 8 beta sur mon système. Vider les poubelles, remettre le simulateur en marche. J'ai aussi redémarré mon ordinateur.
après avoir suivi ces étapes, le simulateur est en mesure d'enregistrer à UserDefaults.
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