How to retrieve values from settings.bundle in Objective-c/Swift?

后端 未结 6 521
独厮守ぢ
独厮守ぢ 2020-12-08 07:52

I have created a project that set and retrieve values from settings.bundle. I have also set some defaults values in settings.bundle file. Now the problem i

6条回答
  •  攒了一身酷
    2020-12-08 08:40

    If anyone needs it - I translated the answer from MIQUEL to Swift (as good as I could as I'm still learning) :

    var standardUserDefaults = NSUserDefaults.standardUserDefaults()
    var us: AnyObject? = standardUserDefaults.objectForKey("your_preference")
    if us==nil {
        self.registerDefaultsFromSettingsBundle();
    }
    

    And the func registerDefaultsFromSettingsBundle:

    func registerDefaultsFromSettingsBundle() {
        // this function writes default settings as settings
        var settingsBundle = NSBundle.mainBundle().pathForResource("Settings", ofType: "bundle")
        if settingsBundle == nil {
            NSLog("Could not find Settings.bundle");
            return
        }
        var settings = NSDictionary(contentsOfFile:settingsBundle!.stringByAppendingPathComponent("Root.plist"))!
        var preferences: [NSDictionary] = settings.objectForKey("PreferenceSpecifiers") as [NSDictionary];
        var defaultsToRegister = NSMutableDictionary(capacity:(preferences.count));
    
        for prefSpecification:NSDictionary in preferences {
            var key: NSCopying? = prefSpecification.objectForKey("Key") as NSCopying?
            if key != nil {
                defaultsToRegister.setObject(prefSpecification.objectForKey("DefaultValue")!, forKey: key!)
            }
        }
        NSUserDefaults.standardUserDefaults().registerDefaults(defaultsToRegister);  
    }
    

提交回复
热议问题