tutorial the programming language for developer apple ios xcode swift

ios - the - Swift-Cast Int en la enumeración: Int



xcode for windows (2)

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

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

ver: El lenguaje de programación Swift § Enumeraciones

NOTA: Esta respuesta ha cambiado. La versión anterior de Swift utiliza el método de clase fromRaw() para convertir valores sin fromRaw() a valores enumerados.

Soy nuevo en Swift (comencé 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 (usando la propiedad de la etiqueta) es el mejor, pero de todos modos tengo que hacer este tipo de casting en diferentes lugares de mi aplicación. ¿Alguien tiene una idea de cómo deshacerse de este error?

¡Gracias!


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