gpt4 book ai didi

ios - 在用户更改之前无法从设置包中读取默认值

转载 作者:行者123 更新时间:2023-11-28 13:41:31 24 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我使用设置包来存储我的应用程序设置以及预定义的默认值。例如,包括一个默认设置为 true 的拨动开关:

<dict>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
<key>Title</key>
<string>Show score</string>
<key>Key</key>
<string>preference_show_score</string>
<key>DefaultValue</key>
<true/>
</dict>

当我检索这个值时使用

let showScore = UserDefaults.standard.bool(forKey: "preference_show_score")

有两个观察到的结果:

  1. 如果用户之前更改过设置,则将正确的设置分配给showScore
  2. 如果用户未触及该设置,则检索到的值为 false,即使默认值应为 true

因此,只有在用户更改后才能读取实际设置,这使得默认值变得多余。

关于这个主题的 SO 帖子很多,但是看完之后,我更加困惑了。

有些人建议在应用程序本身复制设置,但在这种情况下设置应用程序提供什么值(value)?而且,显然,并非完全不可能检索设置 - 只是在用户更改设置之前就无法检索。

其他一些答案说问题与在使用它们之前未使用 UserDefaults 注册默认值有关。在这里,我不确定应该如何以及在哪里完成。我已经在 AppDelegate 和读取值本身的方法中使用以下语句进行了尝试。事实上,根本不使用它似乎没有什么不同。

UserDefaults.standard.register(defaults: [String:AnyObject]())

因此,根据我发现的所有信息,我想知道是否有可能使用默认值,如果可以,它是如何正确完成的?

而且,假设我也被迫在我的应用程序中存储默认设置,应用程序如何知道何时使用它们,即如果用户更新了设置?

最佳答案

注册默认值是完全正确的方法。尽快执行

let defaultValues = ["preference_show_score": true]
UserDefaults.standard.register(defaults: defaultValues)

代码必须在应用程序启动时执行。在用户更改之前,系统会一直考虑默认值。

关于ios - 在用户更改之前无法从设置包中读取默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55971511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com