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
nenneUserDefaults.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?
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
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
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