2016-06-15 9 views
46

używam następujący kod, aby zapisać obiekt do UserDefaults (poprzednio NSUserDefaults) z wykorzystaniem Xcode 8:Zapisz słownika w userdefaults w szybkim 3 z Xcode 8

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

someObject jest słownikiem i używam na symulator.

Z jakiegoś powodu nie jest to zapisywanie wartości, a "zero" jest drukowane. Zastanawiasz się, czy to problem z symulatorem.

+0

faktycznie jest saving..dont wiem jaki jest Twój someObject? Po prostu spróbuj tego defaults.set ("Hello WWDC", forKey: "someObject"), a zobaczysz wynik –

+0

someObject jest Słownikiem. Właśnie edytowane. – alionthego

+1

@alionthego Zauważam ten sam problem, ale dzieje się to tylko na symulatorze, kiedy testuję go na prawdziwym urządzeniu, które działa poprawnie. BTW to jest wersja beta, więc powinieneś zgłosić błąd –

Odpowiedz

8

Ten problem wydaje się być spowodowany zainstalowaniem dwóch wersji xcode/simulatora.

To, co zadziałało, to odinstalowanie xcode 7 i utrzymanie kodu beta 8 w moim systemie. Opróżnianie kosza, resetowanie symulatora i bieganie. Uruchomiłem też ponownie komputer.

Po wykonaniu tych kroków symulator może zapisać do UserDefaults.

+0

Czy mógłbyś proszę ograbić mój problem https://stackoverflow.com/questions/44667335/how-to-pass-prefs-value-data-from-view-controller -to-inside-table-view-cell-with? –

30

Działa idealnie tutaj z tym ..!

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

To jest nieudokumentowane, ale wiadomo, że problem NSUserDefaults/UserDefualts nie działa w symulatorze iOS 10 czy iOS 8/9 symulator został uprzednio run.

Po ponownym uruchomieniu komputera Mac i przejściu bezpośrednio do XCode 8, symulator systemu iOS 10 rozwiąże ten problem.

Zobacz także: Why won't my app run in XCode 8 beta (8S128d)

73

Dla Swift 3

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

Dzięki. Pomogło mi to. –

+0

używając tego w xcode 8.2.1 Otrzymuję zero jako wynik ... –

+0

@ Jan, czy mógłbyś proszę ograbić mój problem bro https://stackoverflow.com/questions/44667335/how-to-pass-prefs-value -data-from-view-controller-to-inside-table-view-cell-with? –

Powiązane problemy