Enumeraciones rápidas detalladas
Declara una enumeración de dirección con cuatro valores: este/oeste/sur/norte.
Los miembros de enumeración de Swift se crean como valores completos de tipos de dirección bien definidos. No se les asigna un valor entero predeterminado como en Objective-C. En el ejemplo de direcciones anterior, al este, oeste, norte y sur no se les asignan implícitamente 0, 1, 2 y 3. Si asigna un valor a un miembro de la enumeración (llamado valor primitivo), el tipo del valor puede ser: cadena, carácter, cualquier valor entero o un tipo de punto flotante.
Los tipos de enumeración de Swift proporcionan una implementación llamada RawValues, que proporciona un valor predeterminado para el elemento de enumeración, que se determina durante la compilación.
Los elementos de enumeración obtenidos a través de los valores RawValues son de tipo opcional, por lo que es necesario hacer algunos juicios sobre si se permite.
Tipo de valor de enumeración no especificado
Primitivas implícitas
Las enumeraciones con valores primitivos implícitos utilizan valores asignados por el sistema:
Primitivas explícitas
Primitivas explícitas implícitas
Aquí se utilizan observadores de propiedades; las enumeraciones en Swift se parecen más a objetos, por lo que usarlos para escuchar Los valores de enumeración son muy convenientes.
En Swift, también puede definir tipos de enumeración, donde cada elemento de la enumeración tiene una información adicional que amplía la representación de la información de la enumeración, también conocida como valor asociado.
Es importante aprender a utilizar los valores asociados. Cubriremos esto con más detalle más adelante en la Sección 9.
Las enumeraciones generalmente son fáciles de ecualizar. Una vez que agregue valores asociados en una enumeración, Swift no podrá compararlos correctamente, por lo que deberá implementar el operador == en la enumeración usted mismo.
La comparación de enumeraciones se realiza mediante el protocolo Comparable.
Las enumeraciones Swift que siguen el protocolo CaseIterable se pueden iterar utilizando allCases para obtener todos los miembros de la enumeración.
Las direcciones de interfaz en la aplicación no son fáciles de nombrar o encontrar si están todas juntas, por lo que puede usar enumeraciones anidadas para el diseño. Se pueden distribuir en varios archivos para facilitar el mantenimiento y la gestión.
Usar enumeraciones para gestionar constantes dentro del sistema es una buena opción.
No puede utilizar propiedades almacenadas en una enumeración, pero puede utilizar propiedades calculadas, que están disponibles en un valor de enumeración o en un valor asociado a una enumeración.
Aquí puedes pensar en la enumeración como una clase, introduce como un método miembro, AppleDeivce.iPhone como una instancia de AppleDeivce y los casos como sus propiedades. El cambio en la introducción en realidad atraviesa todos los casos de esta propiedad anónima, como iPad, iPhone, etc., y luego atraviesa todos los casos de esta propiedad anónima.
Constructor personalizado que puede hacer enumeraciones.
El protocolo de impresión del sistema
Hacer que la enumeración se ajuste a este protocolo
Las enumeraciones se pueden ampliar. Las situaciones en una enumeración se pueden separar de los métodos/protocolos, y los lectores pueden digerir rápidamente el contenido de la enumeración.
Diseñar una función para manejar mensajes de error bajo la clase de red.
Los UserDefaults se utilizan a menudo en proyectos para almacenar información simple del usuario. Pero mantener Key no es fácil. Y tampoco puedes recordarlo. El uso de una estructura de enumeración puede resolver muy bien este problema.
Entonces, al diseñar el módulo de almacenamiento de la aplicación, ¿tiene más capas y es más cómodo de usar?
Una enumeración recursiva es una enumeración que utiliza otra enumeración como valor asociado con el miembro de la enumeración.
Cuando el compilador maneja enumeraciones recursivas, se debe insertar una capa de direccionamiento indirecto. Puede utilizar la palabra clave de indirección antes de declarar un miembro de enumeración para dejar claro que es recursivo. También es posible declarar todos los miembros de la enumeración de forma recursiva antes de declarar la enumeración completa.