我想制作一个枚举,它可以携带UserDefaults
我的应用程序中的所有键。
enum UserDefaultsKeys: String {
case isLoggedIn
case rememberLoginEmail
}
同时我希望它也被分类,这样一个枚举就不会有太多来自不同模块的键,所以我这样做了:
enum UserDefaultsKeys {
case session(key: UserSessionKeys)
case userPreference(key: UserPreferenceKeys)
func key() -> String{
switch self {
case .session(let key):
return key.rawValue
case .userPreference(let key):
return key.rawValue
}
}
}
enum UserSessionKeys: String {
case isLoggedIn
}
enum UserPreferenceKeys: String {
case rememberLoginEmail
}
我现在可以通过以下方式访问原始值:UserDefaultsKeys.session(key: .isLoggedIn).key()
看来我必须编写一个完整的另一个函数来从关联的枚举类型中获取原始值。我觉得可能有更好的方法,有什么建议吗?