使用屏幕保护程序默认值的问题
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"
}
我想将从首选项 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"
}