作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想用一个嵌套枚举替换我的全局字符串常量,用于访问数据库中的列。
结构如下:
enum DatabaseKeys {
enum User: String {
case Table = "User"
case Username = "username"
...
}
...
}
数据库中的每个表都是一个内部枚举,表的名称是枚举的标题。每个枚举中的第一个 case 将是表的名称,后面的 case 是其表中的列。
要使用它,非常简单:
myUser[DatabaseKeys.User.Username.rawValue] = "Johnny"
但我会大量使用这些枚举。必须将 .rawValue
附加到每个实例会很痛苦,而且它不像我希望的那样可读。如何在不使用 rawValue
的情况下访问字符串值?如果我能做到这一点,那就太好了:
myUser[DatabaseKeys.User.Username] = "Johnny"
请注意,我使用的是 Swift 2。如果有更好的方法来实现这一点,我很乐意听到!
最佳答案
虽然我没有找到使用所需语法和枚举来执行此操作的方法,但使用结构是可能的。
struct DatabaseKeys {
struct User {
static let identifier = "User"
static let Username = "username"
}
}
使用:
myUser[DatabaseKeys.User.Username] = "Johnny"
Apple 在 WatchKit 模板中使用这样的结构作为 Storyboard和行类型标识符。
关于string - 在不使用 rawValue 的情况下访问枚举中的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32298952/
我是一名优秀的程序员,十分优秀!