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(YES
或 NO
),则将切换显示为 ON。
您需要在自己的应用程序中执行某些操作,以便如果用户没有为此键选择默认值,您也将其视为"is",以便它与设置包中的“默认默认值”匹配。
一种可能性是,而不是
let sfx: Bool = UserDefaults.standard.bool(forKey: SettingsBundleKeys.SFX)
您可以使用 objectForKey,它会返回 nil,然后您就会知道使用“default default”,并且可以表现得好像 YES
已设置为值。 (这种事情可以使用用户默认值的属性包装器来实现)但苹果所说的是:
从 application:didFinishLaunchingWithOptions: 调用 UserDefault 的 registerDefaults:
这样,您的应用程序和设置应用程序就“默认默认值”(用于未注册用户默认值的键的值)同步,然后 bool(forKey: SettingsBundleKeys.SFX )
将返回 YES
,即使尚未为 SFX
键设置用户默认值
关于swift - 使用 Swift 5 从 Settings.bundle 检索切换开关的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67223642/