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

前端之家收集整理的这篇文章主要介绍了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相关文章