2017-02-23 6 views
-1

Ich habe ein sehr seltsames Problem in Swift3. Ich möchte einen Benutzer bei der Anwendung angemeldet lassen, nachdem er sich bereits in seiner letzten Sitzung authentifiziert hat.UserDefault gibt verschiedene Werte zurück

Mein Problem ist, dass UserDefaults Rückkehr manchmal wahr, manchmal falsch, auch wenn in seinem Konto angemeldet ist. Das Problem macht mich verrückt. Ich verwende einen bool Wert in UserDefaults gespeichert, ich habe versucht, eine bestimmte Zeichenfolge zu speichern, aber das Problem weiterhin.

Wer hatte dieses Problem? Irgendwelche Lösungen? Hier

ist der Code, wenn ich mich einlogge:

UserDefaults.standard.set(true, forKey: LOGIN) 

Und dies ist mein Code in AppDelegate in didFinishLaunchingWithOptions Methode:

if UserDefaults.standard.bool(forKey: LOGIN) { 
    AppData().updateUserInformation() 
} 

Antwort

1

ich Aufruf empfehlen UserDefaults.standard.synchronize() nach UserDefaults Werte einstellen. Viele Entwickler sagen, dass Sie dies nicht tun müssen und dass iOS sich darum kümmern wird.

Aber ich habe festgestellt, dass dies nicht immer der Fall ist, vor allem wenn Werte kurz nach dem Einstellen gelesen werden, oder wenn die App beendet wird, bevor sie synchronisiert sind und daher verloren gehen.

+1

UserDefaults ist nichts anderes als ein In-Memory-Wörterbuch, das gelegentlich auf einem Plist gesichert wird. Es gibt keine Möglichkeit, dass ein Wert, der in Benutzerstandardeinstellungen festgelegt ist, nicht sofort mit oder ohne Synchronisierung zurückgelesen werden kann. Ausführliche Informationen finden Sie unter http://stackoverflow.com/a/40809748/1226963. – rmaddy

+0

Ich sage nur, dass die praktische Erfahrung etwas anderes gezeigt hat. Der Zugriff auf UserDefaults.standard von verschiedenen Threads verschärft die Situation. – picciano

Verwandte Themen