Swift – Cast Int en enum: Int

Soy muy nuevo en Swift (inicié esta semana) y estoy migrando mi aplicación desde Objective-C. Básicamente tengo el siguiente código en Objective-C que funciona bien:

typedef enum : int { MyTimeFilter1Hour = 1, MyTimeFilter1Day = 2, MyTimeFilter7Day = 3, MyTimeFilter1Month = 4, } MyTimeFilter; ... - (void)selectFilter:(id)sender { self.timeFilterSelected = (MyTimeFilter)((UIButton *)sender).tag; [self closeAnimated:YES]; } 

Al traducirlo a Swift, hice lo siguiente:

 enum MyTimeFilter : Int { case OneHour = 1 case OneDay = 2 case SevenDays = 3 case OneMonth = 4 } ... @IBAction func selectFilter(sender: AnyObject) { self.timeFilterSelected = (sender as UIButton).tag as MyTimeFilter self.close(true) } 

Al hacer eso, obtengo el error:

'Int' no es convertible a 'MyTimeFilter'

No sé si mi enfoque (usar la propiedad de label) es el mejor, pero de todos modos necesito hacer este tipo de casting en diferentes lugares de mi aplicación. ¿Alguien tiene una idea de cómo deshacerse de este error?

¡Gracias!

Utilice el inicializador rawValue : es un inicializador generado automáticamente para enum s.

 self.timeFilterSelected = MyTimeFilter(rawValue: (sender as UIButton).tag)! 

ver: El lenguaje de progtwigción Swift § Enumeraciones


NOTA: esta respuesta ha cambiado. La versión anterior de Swift usa el método de class fromRaw() para convertir valores en bruto a valores enumerados.

Uso de Enum para la comparación como a continuación:

 enum LoanType: Int { case FHA , VA, CONS, CASH } var loanType = LoanType.FHA 

Comparación:

 if loanType == .FHA { print("FHA") } 

Para cambiar el valor:

 loanType = .CASH