【问题标题】:bundle settings page on iOS 9 not working as expectediOS 9 上的捆绑设置页面无法按预期工作
【发布时间】:2016-01-01 11:01:04
【问题描述】:

我是 IOS 新手。很可能我错过了一些概念。我已关注 this tutorial 创建捆绑设置页面。

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

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

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

我没有得到正确的配置值...推送已启用,但我总是得到错误,并且在 Idioma 中为 nil...

更新: 我关注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()
    }

【问题讨论】:

  • 能否请您发布保存代码,我的意思是为 NSUserDefaults 代码设置值
  • 是的,我已使用此信息更新了主题。谢谢

标签: ios swift bundle


【解决方案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")

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-04
      • 2021-08-13
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      相关资源
      最近更新 更多