使用屏幕保护程序默认值的问题

Problems using screensaverdefaults

我想将从首选项 sheet 的下拉列表中定义的变量保存到屏幕保护程序默认值。布尔值似乎可以正确保存,但字符串似乎无法正确保存。 我试过 Database.standard.set(selectedVideo: "Choice") ,其中 choice 是一个字符串。但有些事情就是不对劲。如果对我有帮助,我可以上传整个项目,我对 swift 开发还很陌生。 提前致谢!

为一些代码添加了要点: https://gist.github.com/MaxTechnics/394bb98e88f526de5b93b50efdfa4bcf https://gist.github.com/MaxTechnics/5527ede328595a63049e88ffa8f9c5f2

getter有错误selectedVideo:

    var selectedVideo: String {
        return String(Database.Key.selectedVideo)
    }

此代码只是 returns Key,不是值。

需要使用字符串访问器UserDefaults.string(forKey:):

func string(forKey defaultName: String) -> String?

所以正确的代码应该是这样的:

    var selectedVideo: String? {
        return string(forKey: Database.Key.selectedVideo)
    }
    

或者这个:

    var selectedVideo: String {
        return string(forKey: Database.Key.selectedVideo) ?? "default value"
    }