iOS 9上的捆绑设置页面无法按预期工作

时间:2016-01-01 11:01:04

标签: ios swift bundle

我是IOS的新手。 Problaby我错过了一些概念。我已按照this tutorial创建了捆绑设置页。

创建了设置页面,我可以看到我在设置文件中创建的4个设置...确定。

我正在尝试使用此代码在应用启动时尝试获取此值,当应用程序完成启动时:

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

我没有获得正确的配置值...推送已启用,但我总是假的,在Idioma中为零...

更新: 我跟着this instructions我生成了一个plist文件,只是为了存储默认值,并知道我得到了默认值,但我仍然遗漏了一些概念,因为我想知道是否在我的应用程序之外更改了任何默认设置设备的设置应用程序。我已经测试取消选中设备设置中的推送值,我仍然在我的应用中获得默认值...我的应用如何知道设置中的默认值何时更改?

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()
    }

2 个答案:

答案 0 :(得分:1)

它对我有效,请确保在通话前设置值。

    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")

即使在第二次运行中,如果我评论了值设置,它也能正常工作。

答案 1 :(得分:0)

我的更新说明不正确。 RegisterDefaults和Synchronize工作正常我没有正确检查该值。我能够在应用程序之外检索更改后的值...已解决!