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的样子.

希望能帮助到你.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...