在Swift中获取带有字符串的枚举

时间:2017-06-10 15:12:48

标签: swift enums

我希望在用户在选择器视图中选择“操作”后从枚举中获取值。 所以我有字符串:selectedGenre = "action"

如何从案件中获得“28”?

public enum MovieGenres: String {
  case action = "28"
  case adventure = "12"
  case animation = "16"
  ...
}

我需要这样的东西: MoveGenres。( “selectedgenre”)。rawValue

3 个答案:

答案 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