2016-06-15 10 views
46

ich den folgenden Code verwenden, ein Objekt zu UserDefaults zu speichern (bisher NSUserDefaults) mit Xcode 8:speichert Wörterbuch in userdefaults in schnellen 3 mit Xcode 8

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

someobject ein Wörterbuch ist und ich auf die leite Simulator.

Aus irgendeinem Grund wird der Wert nicht gespeichert und 'nil' wird gedruckt. Ich frage mich, ob es ein Simulatorproblem ist.

+0

tatsächlich saving..dont wissen, was Ihr ist Someobject? Probieren Sie dieses defaults.set ("Hallo WWDC", forKey: "someObject") und Sie werden das Ergebnis sehen –

+0

someObject ist ein Dictionary. Gerade bearbeitet. – alionthego

+1

@alionthego Ich habe das gleiche Problem, aber es passiert nur am Simulator, wenn ich es auf einem echten Gerät testen, es funktioniert ordnungsgemäß. BTW, es ist Beta, so sollten Sie einen Fehler melden –

Antwort

8

Dieses Problem scheint durch zwei Versionen von Xcode/Simulator verursacht zu werden.

Was für mich funktionierte, war die Deinstallation von xcode 7 und einfach die xcode 8 Beta auf meinem System zu behalten. Mülleimer leeren, Simulator zurücksetzen und ausführen. Ich habe auch meinen Computer neu gestartet.

Nach diesen Schritten kann der Simulator in UserDefaults speichern.

+0

könnten Sie bitte plündern bei meinem Problem https://StackOverflow.com/Questions/44667335/How-to-pass-prefs-value-data-from-view-controller -zu-innen-tabellenansicht-zelle-mit? –

30

Perfekt funktioniert hier mit diesem ..!

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

Dies ist nicht dokumentiert, aber bekanntes Problem, dass NSUserDefaults/UserDefualts nicht in dem iOS-10-Simulator funktioniert, wenn die iOS 8/9 Simulator zuvor ausgeführt werden.

Starten Sie Ihren Mac neu und gehen direkt zu XCode 8, iOS 10 Simulator wird dieses Problem beheben.

Siehe auch: Why won't my app run in XCode 8 beta (8S128d)

73

Für Swift 3

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

Danke .dies hat mir geholfen. –

+0

mit diesem in xcode 8.2.1 ich bin als Ergebnis Null ... –

+0

@Jan, können Sie bitte plündern mein Problem bro https://StackOverflow.com/Questions/44667335/How-to-pass-prefs-value -data-from-view-controller-zu-innen-tabellenansicht-zelle-mit? –