【发布时间】:2019-12-29 07:15:24
【问题描述】:
我想创建一个枚举,它可以在我的应用中携带所有 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()
看来我必须编写一个完整的另一个函数来从关联的枚举类型中获取原始值。我觉得可能有更好的方法,有什么建议吗?
【问题讨论】:
-
我有一个建议让您以一种非常 Swifty 和类型安全的方式访问所有用户默认值,那就是使用
PropertyWrapper。 -
您的问题非常具体到
enum,请将您的问题更改为更一般的问题,如果您需要帮助,请告诉我。