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.

52
demandé sur alionthego 2016-06-15 06:33:06

5 réponses

Pour Swift 3

UserDefaults.standard.setValue(token, forKey: "user_auth_token")
print("\(UserDefaults.standard.value(forKey: "user_auth_token")!)")
76
répondu Jan 2016-10-05 14:02:15

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;}
36
répondu Bishow Gurung 2016-11-28 04:29:29

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)

12
répondu Richard 2017-05-23 11:47:31

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.

9
répondu alionthego 2016-06-15 15:27:28

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 
0
répondu Sandeep Vishwakarma 2018-07-31 05:12:35