我希望在用户在选择器视图中选择“操作”后从枚举中获取值。
所以我有字符串:selectedGenre = "action"
。
如何从案件中获得“28”?
public enum MovieGenres: String {
case action = "28"
case adventure = "12"
case animation = "16"
...
}
我需要这样的东西: MoveGenres。( “selectedgenre”)。rawValue
答案 0 :(得分:9)
首先,这是您定义enum
enum MovieGenre: String {
case action
case adventure
case animation
var code: Int {
switch self {
case .action: return 28
case .adventure: return 12
case .animation: return 16
}
}
}
现在给出一个字符串
let stringFromPicker = "action"
您可以尝试构建枚举值
if let movieGenre = MovieGenre(rawValue: stringFromPicker) {
print(movieGenre.code) // 28
}
正如您所看到的,我将
MovieGenres
重命名为MovieGenre
,实际上枚举名称应该是单数。
答案 1 :(得分:3)
可能你想做这样的事情...... rawValue和你想得到的案件的价值之间有区别......所以一开始你想得到这个案子:
//Get the value from picker
let selectedValueString = MovieGenres(rawValue: picker.value).myDesiredValue
现在到了枚举:
//The raw Values are the same if you choose String type
public enum MovieGenres: String {
case action
case adventure
case animation
var myDesiredValue: String{
switch self{
case action:
return "28"
case adventure:
return "12"
case animation:
return "16"
}
}
}
答案 2 :(得分:1)
您可以使用rawValue
获取Strings
:
MovieGenres.Action.rawValue // 28
从字符串中获取它:
let twentyEight = MovieGenres(rawValue: "28")
另一个提示,就是使用小写命名你的案例的Swift惯例,如下所示:
MovieGenres.action.rawValue // 28