在枚举中使用int作为案例

时间:2016-07-27 12:31:52

标签: swift enums int

我正在使用一些基本的Swift操作。使用滑块,我想指定相应的标签。由于滑块使用int来表示位置,因此我将使用枚举进行转换。

enum Temperature: Int {
   case 0 = "Zero"
   case 1 = "One"
   case 2 = "Two"
   case 3 = "Three"
}

我想这样称呼:

variable = Temperature.0

任何帮助都是理想的。请让我知道你的想法。

谢谢!

5 个答案:

答案 0 :(得分:2)

您可以使用数组:

let temperatures = ["Zero", "One", "Two", "Three"]

let one = temeratures[1]

或元组:

let temperatures = ("Zero", "One", "Two", "Three")

let one = temperatures.1

虽然你不能在后者

中使用运行时值(非文字)

答案 1 :(得分:1)

枚举的原始值放在=的右侧。在您的枚举Temperature中,原始值类型为Int,因此您应该这样做:

enum Temperature: Int {
    case Zero = 0, One, Two, Three
}

我没有为其他案例写原始值,因为可以推断它们。

现在你可以访问这样的案例:

Temperature.One

“但我想使用整数文字来访问它!”你哭了。

不幸的是,这在Swift中是不可能的。你能得到的最接近的是:

enum Temperature: Int {
    case _0 = 0, _1, _2, _3
}

您可以使用初始化程序初始化枚举:

Temperature(rawValue: 1)

答案 2 :(得分:1)

最佳选择我会说你使用字典:

let Temperatures:[Int: String] = [0: "zero", 1:"one"]

然后您可以使用滑块值访问它。在访问不在字典中的值时要注意 - >检查无。

答案 3 :(得分:0)

使用元组,枚举不是为了这个目的。

let temperature = ("Zero", "One", "Two", "Three")
let zero = temperature.0

答案 4 :(得分:0)

您可以尝试这种方式

enum CompassPoint : Int {
      case north = 0
      case south = 1
      case east = 2
      case west = 3 
 }

func checkPoint(compass : CompassPoint) -> String {

   switch compass {
       case .east:
           return "Batsman"
       case .south:
           return "Bowler"
       case .north:
           return "Wicket Keeper"
       case .west:
           return "All Rounder"
   }}

print(checkPoint(compass: CompassPoint(rawValue: 3)!))