iOS 11-UserDefaults.standard字符串值nil
在尝试检索存储在UserDefaults.standard中的值时,我当前发现Root.plist中设置的字符串值未按预期读取;它在Xcode情节提要UI中有一个默认值(例如),但在ViewController swift代码中读取时为零 在ViewController的viewDidLoad()中,我正在调用iOS 11-UserDefaults.standard字符串值nil,ios,xcode,Ios,Xcode,在尝试检索存储在UserDefaults.standard中的值时,我当前发现Root.plist中设置的字符串值未按预期读取;它在Xcode情节提要UI中有一个默认值(例如),但在ViewController swift代码中读取时为零 在ViewController的viewDidLoad()中,我正在调用 UserDefaults.standard.register(defaults: [String : Any]()) 然后,在ViewController的ViewWillAs
UserDefaults.standard.register(defaults: [String : Any]())
然后,在ViewController的ViewWillAspect()中,我尝试读取字符串值,如下所示:
let userDefaults = UserDefaults.standard
var defaultURL = userDefaults.string(forKey: "server_url")
但defaultURL为零。不完全确定这里发生了什么!有人能提供建议吗 您必须注册具体的键和值
谢谢,谢谢-但我们为什么要这么做?当然,我只是想从UI小部件中获取存储的默认值,然后永远使用它,而不是每次都要以编程方式这样做?也许我遗漏了一些关于XCode脚本UI的功能?在故事板编辑器中保留该选项似乎是空白的……在
UserDefaults
中注册默认值的目的是在应用程序第一次启动时拥有一个已定义的状态。如果以后保存了其他值,则使用此值。删除首选项文件或重新安装应用程序后,该值将恢复为默认值。好的,这有助于澄清,谢谢-因此,当我们有一个设置包值在应用程序首次启动时不同步时(例如,设置值设置为www.apple.com,UserDefaults
值正在注册为您上面提到的www.google.com)如何解决此问题?看起来设置包与我以编程方式设置的内容不同步……当然,您必须注册该值(例如,在应用程序中,将尽快完成启动
)然后检索它并在设置
中设置相应的元素。即使每次启动时调用寄存器
,默认值也只会在第一次更改之前使用。很好-很有意义,它现在正在工作-感谢您的精彩解释
UserDefaults.standard.register(defaults: ["server_url" : "http://www.google.com/"])