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

我创建了一个包含大约8个切换开关的设置包.我想要做的是从设置包中获取默认值.目前我现在有这两种方法:
func registerSettingsBundle(){
        let appDefaults = [String:AnyObject]()
        UserDefaults.standard.register(defaults: appDefaults)
        UserDefaults.standard.synchronize()
    }

    func updateDisplayFromDefaults(){
        let defaults = UserDefaults.standard
        let update_lot = defaults.bool(forKey: "update_lot")
        print(update_lot)
    }

我在viewDidLoad中调用这些方法

override func viewDidLoad() {
        super.viewDidLoad()
        registerSettingsBundle()
        updateDisplayFromDefaults()
    }

然而,这并没有得到我的默认值(这些都是真的,但它们都返回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
因此,当应用程序启动时,它显示如上.

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

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

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

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

func setApplicationDefault() {
    let stanDefaults = UserDefaults.standard
    let appDefaults = ["reminder_pref": true]
    stanDefaults.register(defaults: appDefaults)
    stanDefaults.synchronize()
}

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

Default value of Reminder – true

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

希望能帮助到你.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...