Multivalue type settings bundle fields alway return null

后端 未结 2 1787
时光取名叫无心
时光取名叫无心 2020-12-03 18:59

I have a problem retrieving default values from the settings bundle when first launching an App. All non-multivalue fields return the default correctly. All multivalue field

2条回答
  •  囚心锁ツ
    2020-12-03 19:28

    I just ran into this problem and I ask myself why the settings bundle provides a default value, if this value can never be read from the NSUserDefaults.

    I created a swift extension that does the following:

    • Read the value for a given key
    • If the key does not exist set a default and return this default

    So I can do this:

    NSUserDefaults.standardUserDefaults().settignsStringValue("MYPREFS_DOMAIN", defaultValue: "domain.com")
    

    This is the extension:

    extension NSUserDefaults{
    
        func settingsBoolValue(key: String, defaultValue: Bool) -> Bool{
            // The case for Bool is different as it would return `false` when the key is not set.
            if let v: AnyObject = self.objectForKey(key){
                // The boolean value exists
            } else {
                self.setObject(defaultValue, forKey: key)
            }
    
            return self.boolForKey(key)
        }
    
        func settingsStringValue(key: String, defaultValue: String) -> String{
            if let v = self.stringForKey(key){
                return v
            } else {
                self.setObject(defaultValue, forKey: key)
                return defaultValue
            }
        }
    }
    

提交回复
热议问题