2017-12-06 4 views
0

In meiner App habe ich Daten in userDefaults gespeichert und wenn ich versuche, die Daten mit dem gleichen Schlüssel zu aktualisieren, wird es aktualisiert, aber nur wenn ich die App schließe und starte den Simulator neu. Sonst, wenn ich sofort darauf zugreifen möchte (es andere Ansicht Controller) gibt es mir nicht das aktualisierte Objekt, aber es gibt mir die letzten Daten, die ich mit diesem Schlüssel gespeichert habe. Ich aktualisiere die Daten in einem View-Controller in override func viewWillDisappear(_ animated :) und versuche, darauf im übergeordneten View-Controller zuzugreifen.Zugriff auf Daten von Benutzerstandards im Lebenszyklus der App

Hier ist, wie ich das tun:

override func viewWillDisappear(_ animated : Bool) { 
    super.viewWillDisappear(animated) 
    if self.isMovingFromParentViewController { 
     if saveButtonPressed != true { 
      // here I don't need to execute code the back button is pressed 
     } else { 
      if let selection = selectedMinutes { 
       UserDefaults.standard.set(selection, forKey: "selectedRow") 
       print(UserDefaults.standard.object(forKey: "selectedRow")!) // this line prints the actual updated data but I still cannot get it in the parent view controller 
      } 
     } 
    } 
} 
+0

wo in der übergeordneten Ansicht Controller synchronisieren sollte versuchen Sie es zugreifen? – Leonardo

+0

Der Eltern-View-Controller ist eigentlich der vorherige Controller und ich knalle einfach den aktuellen View-Controller und die App geht einfach in den übergeordneten View-Controller. – Viktor

+0

Verwenden Sie 'UserDefaults' nicht, um Daten zwischen Controllern freizugeben. Sie sollten einen Verweis auf den übergeordneten Ansichtscontroller haben, damit Sie den Wert direkt an den übergeordneten Controller übergeben können. – vadian

Antwort

-2

Sie rufen UserDefaults nach Einstelldaten

UserDefaults.standard.set(selection, forKey: "selectedRow") 
UserDefaults.standard.synchronize(); 
+0

Eigentlich nach [Apple Docs] (https://developer.apple.com/documentation/foundation/userdefaults/1414005-synchronize) Synchronisierung ist unnötig – Leonardo

+0

Danke, aber ich habe es versucht und es funktioniert nicht – Viktor

Verwandte Themen