将Int传递给枚举并返回一个String

时间:2017-06-02 08:45:21

标签: ios swift enums

我正在尝试完成一个将整数值传递给枚举的任务,并为传入的整数寄存器返回一个特定的字符串。

我正在使用枚举,因为整数是已知的,并且每个都有意义。我做了以下事情:

enum Genre: String {
    case 28 = "Action"
    case 12 = "Adventure"
    case 16 = "Animation"
    case 35 = "Comedy"
    case 80 = "Crime"
}

我期待的是什么:在传递其中一个案例时,我想返回String关联。

如果您有任何问题或需要进一步了解,请在评论中提出。

4 个答案:

答案 0 :(得分:1)

我建议创建一个字典来实现您需要的映射,并为您的密钥创建常量以使用它们。

您可以先创建一个名为Constants的类,然后在其中添加以下常量:

static let action = 28
static let adventure = 12
// ... The rest of your constants.

// Then create a dictionary that contains the values:
static let genre = [action : "Action", adventure : "Adventure"] // And so on for the rest of your keys.

然后您可以使用该字典访问您需要的任何值,如下所示:

let actionString = Constants.genre[Constants.action]

希望这有帮助。

答案 1 :(得分:1)

这个怎么样

enum Genre: Int {
    case action = 28
    case adventure = 12
    case animation = 16
    case comedy = 35
    case crime = 80
}

并像这样使用

// enum as string 
let enumName = "\(Genre.action)" // `action`

// enum as int value 
let enumValue = Genre.action.rawValue // 28

// enum from int
let action = Genre.init(rawValue: 28)

希望它有所帮助。谢谢。

答案 2 :(得分:1)

let Genre = [28:"action",
12: "adventure",
16: "animation",
35: "comedy",
80: "crime"]

使用示例:
    let retValue = Genre[28]//"action"

这是游乐场演示:

enter image description here

答案 3 :(得分:1)

我们不能将Int作为enum case名称 试试这个:

enum Genre: Int {
case action = 28, adventure = 12, animation = 16, comedy = 35, crime = 80

  func getString() -> String {
    switch self {
    case .action: return "Action"
    case .adventure: return "Adventure"
    case .animation: return "Animation"
    case .comedy: return "Comedy"
    case .crime: return "Crime"
    }
  }
}

let gener = Genre.action
print(gener.getString())//"Action"

如果您只知道整数值,请执行以下操作:

let gener1 = Genre(rawValue: 12)!
print(gener1.getString())//"Adventure"