string - 在不使用 rawValue 的情况下访问枚举中的字符串值

标签 string swift enums swift2

我想用一个嵌套枚举替换我的全局字符串常量,用于访问数据库中的列。

结构如下:

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/

相关文章:

c# - C#中的字符串排序

c++ - 将文件作为参数从 Swift 传递给 C++ 方法

ios - swift 仅满足某些要求时如何进入另一个segue?

c++ - 我如何制作和填充枚举类型的数组

python - 从用户输入中选择第一个字母

c# - 如何衡量两个字符串之间的相似度?

ios - 翠鸟图像渲染回收单元

C++ 在枚举中有数组值?

java - 如何将不同的枚举类型传递给方法?

java - 如何在java中将char []转换为字符串?