使用 Swift 从 Settings.bundle 检索 Toggle Switch 的值 5

retrieving the value of Toggle Switch from Settings.bundle with Swift 5

let sfx : Bool = UserDefaults.standard.bool(forKey: SettingsBundleKeys.SFX)

每当代码运行时。检索到的值始终为 false。正如您在图像中看到的,默认值为 YES(在应用程序首次安装时,它应该是 true,直到用户将其更改为 NO)

struct SettingsBundleKeys {
    static let Reset = "RESET_APP_KEY"
    static let Music = "MUSIC_PREFERENCE"
    static let SFX = "SFX_PREFERENCE"
    static let BuildVersionKey = "build_preference"
    static let AppVersionKey = "version_preference"
}

使用设置包时:

设置包中的“默认值”仅供 iOS 设置应用使用,绝不会供您的应用使用。 “切换开关的默认值”表示如果尚未设置 userDefault(YESNO),则将切换显示为 ON。

您需要在自己的应用程序中做一些事情,这样如果用户没有为此键选择默认值,您也将其视为是,以便它与设置包中的 'default default value' 匹配。

一种可能性是

let sfx: Bool = UserDefaults.standard.bool(forKey: SettingsBundleKeys.SFX)

您可以使用 objectForKey,这将 return 为零,然后您将知道使用 'default default' 并且可以表现得好像 YES 已被设置为值。 (这种事情可以在用户默认设置上使用 属性 包装器来实现)但是 Apple 说的是:

application:didFinishLaunchingWithOptions:

调用 UserDefault 的 registerDefaults

这样您的应用程序和设置应用程序就 'default defaults' 同步 - 用于未注册用户默认值的键的值 - 然后 bool(forKey: SettingsBundleKeys.SFX) 将 return YES 即使尚未为 SFX 键设置用户默认值