ios – Swift 4设置捆绑,获取默认值

前端之家收集整理的这篇文章主要介绍了ios – Swift 4设置捆绑,获取默认值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个包含大约8个切换开关的设置包.我想要做的是从设置包中获取默认值.目前我现在有这两种方法
  1. func registerSettingsBundle(){
  2. let appDefaults = [String:AnyObject]()
  3. UserDefaults.standard.register(defaults: appDefaults)
  4. UserDefaults.standard.synchronize()
  5. }
  6.  
  7. func updateDisplayFromDefaults(){
  8. let defaults = UserDefaults.standard
  9. let update_lot = defaults.bool(forKey: "update_lot")
  10. print(update_lot)
  11. }

我在viewDidLoad中调用这些方法

  1. override func viewDidLoad() {
  2. super.viewDidLoad()
  3. registerSettingsBundle()
  4. updateDisplayFromDefaults()
  5. }

然而,这并没有得到我的默认值(这些都是真的,但它们都返回false).如果我关闭应用程序,打开设置,调整设置并重新打开应用程序,这会产生正确的值.有没有获得默认设置?我走了阅读plist的路线,但是如果我更改设置包中的设置,它将不会生效.

解决方法

this does not get me the default values (which are all true,but they
all return false)

看起来你有一个切换开关,在设置包中显示为ON,当你读取包时,你得到所有的错误值.

如果是这种情况,那么你在这里遗漏了一些东西.

在设置bundle(Root.plist)时,我们有“Default Value”字段,它与切换开关的实际默认值无关.这只是一个切换的视觉指示器.
您可以在plist中将“Default value”设置为“YES”,但是当您尝试读取该值时,您最终会变为false.

在这里,我将Root.plist中的Reminder的默认值设置为YES,更新为NO
因此,当应用程序启动时,它显示如上.

但是当我试图读取这些默认值时 – 它们都是假的.

  1. func getDefaults() {
  2. let stanDefaults = UserDefaults.standard
  3. print("Default value of Update - \(stanDefaults.bool(forKey: "update_lot_pref"))")
  4. print("\nDefault value of Reminder - \(stanDefaults.bool(forKey: "reminder_pref"))")
  5. }

Default value of Update – false Default value of Reminder – false

现在,如果要同步这些值 – Root.plist中的默认值和默认值 – 那么您必须以编程方式设置它.

  1. func setApplicationDefault() {
  2. let stanDefaults = UserDefaults.standard
  3. let appDefaults = ["reminder_pref": true]
  4. stanDefaults.register(defaults: appDefaults)
  5. stanDefaults.synchronize()
  6. }

在我的Root.plist中,我的默认值为YES,并且当viewDidload我将此首选项值设置为true时.我跑的时候给了我

Default value of Reminder – true

这就是我的Root.plist的样子.

希望能帮助到你.

猜你在找的iOS相关文章