我正在尝试完成一个将整数值传递给枚举的任务,并为传入的整数寄存器返回一个特定的字符串。
我正在使用枚举,因为整数是已知的,并且每个都有意义。我做了以下事情:
enum Genre: String {
case 28 = "Action"
case 12 = "Adventure"
case 16 = "Animation"
case 35 = "Comedy"
case 80 = "Crime"
}
我期待的是什么:在传递其中一个案例时,我想返回String关联。
如果您有任何问题或需要进一步了解,请在评论中提出。
答案 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"
这是游乐场演示:
答案 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"