2017-12-05 5 views
1

Beim Versuch, die in UserDefaults.standard gespeicherten Werte abzurufen, stelle ich derzeit fest, dass ein in der Root.plist gesetzter String-Wert nicht wie erwartet gelesen wird. Es hat einen Standardwert, der über die Xcode-Storyboard-UI zugewiesen wurde (z. B. http://www.google.com), aber wenn es innerhalb des ViewController-Swift-Codes gelesen wird, ist es null.iOS 11 - UserDefaults.standard string value

Innerhalb des Viewcontroller des viewDidLoad(), I

nenne
UserDefaults.standard.register(defaults: [String : Any]()) 

Innerhalb des Viewcontroller des viewWillAppear(), versuche ich dann den String-Wert zu lesen wie folgt:

let userDefaults = UserDefaults.standard 
    var defaultURL = userDefaults.string(forKey: "server_url") 

Aber defaultURL ist gleich Null . Nicht ganz sicher, was hier vor sich geht! Kann jemand beraten?

Antwort

0

Sie haben konkrete Taste (n) und Wert (e)

UserDefaults.standard.register(defaults: ["server_url" : "http://www.google.com/"]) 
+0

Danke, geschätzt registrieren - aber warum brauchen wir, dies zu tun? Sicher möchte ich nur den Standardwert verwenden, der vom UI-Widget gespeichert wurde, und dieses dann für immer verwenden, anstatt jedes Mal programmgesteuert das tun zu müssen? Vielleicht fehlt mir etwas, was das XCode Storyboard UI tut? Es könnte auch sein, dass es im Storyboard-Editor leer bleibt. – SD123

+0

Der Zweck der Registrierung von Standardwerten in 'UserDefaults' besteht darin, beim ersten Start der Anwendung einen definierten Status zu haben. Wenn später ein anderer Wert gespeichert wird, wird dieser Wert verwendet. Nach dem Löschen der Einstellungsdatei oder der Neuinstallation der App wird der Wert auf den Standardwert zurückgesetzt. – vadian

+0

Okay, das hilft bei der Klärung, danke - also wenn wir einen Set-Wert haben, der beim ersten Start der App nicht synchron ist (zB Einstellungen ist auf www.apple.com eingestellt und der 'UserDefaults' Wert ist) wie Sie oben auf www.google.com registriert haben) Wie lösen Sie das? Es sieht so aus, als ob das Settings-Bundle mit dem, was ich programmatisch eingestellt habe, nicht synchron ist ... – SD123