En esta publicación, voy a demostrar algunas de las nuevas y poderosas características de las enumeraciones en Swift.
Índice de contenido
Declarar enumeraciones rápidas
Casi todos los lenguajes de programación tienen el concepto de enumeraciones. Una enumeración le permite agrupar un conjunto de constantes relacionadas. Contiene una lista completa de todos los valores posibles para un tipo determinado.
En Swift, declara una enumeración simple de la siguiente manera:
Esta enumeración contiene una lista completa de todas las funciones disponibles en un muy calculadora simple. Cada caso palabra clave declara un miembro separado de la enumeración.
También puede declarar una enumeración utilizando un único caso y enumere los miembros de la enumeración separados por comas como se muestra aquí:
A diferencia de las enumeraciones en Objective-C, a los miembros de una enumeración Swift no se les asigna automáticamente un valor entero. Cada miembro es un valor completo de la enumeración.
Usted hace referencia a los valores de una enumeración especificando el tipo de enumeración, seguido de un punto, y luego el miembro de enumeración como se muestra aquí (especifiqué el tipo de operacion corriente variable para reforzar que es el tipo de enumeración:CalculadoraOperación):
Esto es diferente a Objective-C donde solo hace referencia al nombre del miembro (es decir, UITableViewCellAccessoryCheckMark). Prefiero la nueva sintaxis Swift ya que demuestra claramente que los miembros son parte de la misma enumeración. De hecho, cuando escribe el nombre de la enumeración y escribe un punto, Code Completion muestra una lista de miembros para elegir.
Una vez que se declara que el tipo de una variable pertenece a una enumeración particular, puede utilizar una sintaxis de puntos abreviada para acceder a los miembros. Esto es particularmente útil en cambiar declaraciones como se muestra aquí:
Valores brutos de enumeración
En ocasiones, es posible que desee asociar un valor con cada miembro de una enumeración. Por ejemplo, en Objective-C es común crear valores de cadena asociados para miembros de enumeración creando una clase contenedora para la enumeración. Esto es un poco torpe, pero funciona.
Afortunadamente, en Swift, esta funcionalidad está integrada en enumeraciones en forma de valores brutos. Por ejemplo, la siguiente enumeración declara un valor de cadena asociado para cada miembro de la enumeración:
Al declarar valores sin procesar para una enumeración, agrega dos puntos después del nombre de la enumeración seguido del tipo de los valores sin procesar asociados (todos deben ser del mismo tipo). Luego, especifica el valor sin procesar para cada miembro en la enumeración.
Aquí hay algunas reglas que rigen los valores brutos:
- Todos los valores brutos deben ser del mismo tipo
- Los valores brutos pueden ser cadenas, caracteres o cualquier tipo de número entero o de punto flotante
- Dentro de una enumeración, cada valor bruto debe ser único
- Los valores enteros sin procesar aumentan automáticamente si no se especifica ningún valor para algunos de los miembros de la enumeración.
Puede acceder al valor bruto de un miembro de enumeración llamando a su toRaw () método. Por ejemplo:
Este método acepta un parámetro de tipo DeviceFamily y accede al crudo Cuerda valor llamando al toRaw () método en el DeviceFamily miembro. Entonces, por ejemplo, si DeviceFamily.AppleTV se pasa a este método, la llamada al toRaw () El método almacenará la cadena “Apple TV” en el apellido variable.
Por el contrario, puede utilizar una enumeración fromRaw () método para recuperar el miembro de enumeración para un valor crudo particular como se muestra aquí:
El signo de interrogación después DeviceFamily es la forma de Swift de indicar que el valor de la DeviceFamily la variable puede ser nula. Esto es así porque el fromRaw () Es posible que el método no encuentre un miembro de enumeración coincidente.
Valores asociados de enumeración
En Swift, las enumeraciones también tienen una función avanzada que le permite almacenar valores asociados con miembros de enumeración. Esto es similar en concepto, pero diferente de los valores brutos.
Por ejemplo, el siguiente código declara un Identificador único enumeración que tiene UUID y Autoincremento miembros:
los UUID miembro puede tener un asociado Cuerda valor y el Autoincremento miembro puede tener un asociado En t valor. Esta enumeración puede usarse en una situación en la que está creando un puente entre dos aplicaciones diferentes: una aplicación que almacena identificadores únicos como valores UUID y otra que almacena identificadores únicos como números enteros.
Tenga en cuenta que el Identificador único La declaración de enumeración no establece el valor de cada miembro como lo hace cuando especifica valores sin procesar. Más bien, simplemente declara el tipo de valor asociado con cada miembro.
Puede declarar que una variable sea de tipo Identificador único y luego almacene un En t o UUID valor en la variable. Por ejemplo:
Puedes usar un cambiar declaración para obtener el valor de un Identificador único variable como se muestra aquí:
en un cambiar declaración, puede extraer cada valor asociado como una variable utilizando la var prefijo o como una constante usando el dejar prefijo como se muestra arriba.
Conclusión
Es genial ver estas funciones potentes y más modernas en Swift. En última instancia, estas herramientas ayudan a proteger su código y hacen que escribir sus aplicaciones de iOS sea aún más fácil.