Я новичок в IOS. Вероятно, мне не хватает какой-то концепции. Я следовал этому руководству для создания страницы настроек пакета.

Страница настроек создана, и я вижу 4 настройки, которые я создал в файле настроек ... ок.

Я пытаюсь получить эти значения при запуске приложения с этим кодом, когда приложение didfinishlaunchwithoptions:

//Settings:
let standardUserDefaults : NSUserDefaults = NSUserDefaults.standardUserDefaults()
print(standardUserDefaults.boolForKey("Push"))
print(standardUserDefaults.stringForKey("Idioma"))

Я не получаю правильных значений конфигурации ... Push включен, но я всегда получаю false и nil в Idioma ...

Update: I followed this instructions I've generated a plist file only to store defaults values and know I get the defaults values but I continue missing some concept because I want to know if any default setting is changed outside my app in the settings app of the Device. I've tested to uncheck Push value in settings of device and I still get the default value in my app... How my app knows when a default value has been changed in settings?

var myDict: NSDictionary?
    if let path = NSBundle.mainBundle().pathForResource("SettingsDefaults", ofType: "plist") {
        myDict = NSDictionary(contentsOfFile: path)
    }
    if let dict = myDict {
        print(dict["Push"])
        NSUserDefaults.standardUserDefaults().registerDefaults(dict as! [String : AnyObject])
        NSUserDefaults.standardUserDefaults().synchronize()
    }

Carlos Cañizares

Ответов: 2

Ответы (2)

It works as expected for me, Please ensure you set values prior to call.

    let standardUserDefaults : NSUserDefaults = NSUserDefaults.standardUserDefaults()

    standardUserDefaults.setBool(true, forKey: "Push")
    standardUserDefaults.setValue("Idioma Value", forKey: "Idioma")

    print(standardUserDefaults.boolForKey("Push"))
    print(standardUserDefaults.stringForKey("Idioma"))

Вывод

true
Optional("Idioma Value")

Даже во втором прогоне, если я прокомментировал настройки значений, он работает нормально.

Мое примечание об обновлении было неправильным. RegisterDefaults и Synchronize работают нормально, я неправильно проверял значение. Я могу получить измененное значение вне приложения ... Решено!

2022 WebDevInsider