swift - 使用 Swift 5 从 Settings.bundle 检索切换开关的值

标签 swift toggle

enter image description here

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。

您需要在自己的应用程序中执行某些操作,以便如果用户没有为此键选择默认值,您也将其视为"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/

相关文章:

Swift 测试非标量类型

javascript - 在 ionic angularJS中动态添加切换

javascript - 切换 Web 应用程序中内容的可见性

javascript - 意外的帖子

ios - UIButton 子类 @IBAction 不起作用

ios - 没有这样的模块 'Alamofire' ,'SwiftyJson' ,'UiKiT'

Swift AVPlayer 在模拟器上抛出异常

comments - Pydev 注释切换添加缩进

javascript - 悬停并切换基本的javascript

ios - 如何打开事件并在选择 Collection View 单元格时传递变量?