使用 registerDefaults 首次启动时设置空白

Settings Blank On First Launch With registerDefaults

我对带有设置包的 NSUserDefaults 的 registerDefaults 有疑问。也许其他人已经处理过这个问题并且只是忽略了它,但它已经到了我确信这是一个错误或者我们正在错误地处理这个问题的地步。

  1. 创建新词典并注册。
  2. 启动应用程序。
  3. 转到 iOS 设置应用程序
  4. 转到您的应用设置,看到唯一可见的内容是位置和相机。

以前的解决方案向上滑动设置应用程序以关闭并重新启动它,然后所有设置都会出现。

显然这并不理想,尽管自从 iOS 7 以来我们一直在处理这个问题,但我相信我已经准备好寻求真正的解决方案,因为最近它的支持问题越来越多。有没有人在第一次发布时做过这个工作,如果有,你能分享一下你的技术吗?

我们尝试过的事情。

  1. 将寄存器函数移动到 init() = 相同的结果
  2. 在 didFinishLaunching 之后调用寄存器 = 相同的结果
  3. 只添加一个选项来缩小问题范围 = 同样的结果

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        var appDefaults = Dictionary<String, AnyObject>()
        appDefaults["some_setting"] = true
        appDefaults["some_setting2"] = false
        NSUserDefaults.standardUserDefaults().registerDefaults(appDefaults)
        NSUserDefaults.standardUserDefaults().synchronize()
        return true
    }
    

这是 最终 在 iOS 10 中修复的,无需对上述代码进行任何更改。 谢谢苹果!