Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

239
Vistas
Nuevas advertencias de Swift 5 para las enumeraciones de Objective-C: ¿cómo deshacerse de ellas?

A partir de Xcode 10.2, cuando uso enumeraciones que definí en Objective-C, pero en una declaración de cambio de Swift 5, recibo la siguiente advertencia, incluso si he agotado todos los valores de enumeración posibles.

 Switch covers known cases, but 'MyObjectiveCEnumName' may have additional unknown values

Xcode me dice que debo arreglar esto por

 Handle unknown values using "@unknown default"

¿Por qué sucede esto y qué puedo hacer al respecto?


Ejemplo

Enum Objective-C

 typedef NS_ENUM(NSUInteger, CardColor) { CardColorBlack, CardColorRed };

Declaración de cambio de Swift 5

 var cardColor: CardColor = .black switch (cardColor) { case .black: print("black") case .red: print("red") }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

TL;DR

Si desea que las enumeraciones de Objective-C se traten como las de Swift, ahora debe declararlas usando una macro diferente, NS_CLOSED_ENUM , en comparación con la antigua NS_ENUM . Cambiar esto hará que la advertencia desaparezca.

El ejemplo anterior se convertiría

 typedef NS_CLOSED_ENUM(NSUInteger, CardColor) { CardColorBlack, CardColorRed };

Detalles

De las notas de la versión de Swift 5 :

En el modo Swift 5, se requieren cambios en las enumeraciones que se declaran en Objective-C o que provienen de los marcos del sistema para manejar casos desconocidos, casos que podrían agregarse en el futuro o que pueden definirse de forma privada en un archivo de implementación de Objective-C. . Formalmente, Objective-C permite almacenar cualquier valor en una enumeración siempre que encaje en el tipo subyacente. Estos casos desconocidos se pueden manejar utilizando el nuevo caso predeterminado @unknown, que aún proporciona advertencias si se omite algún caso conocido del conmutador. También se pueden manejar usando un caso predeterminado normal.

Si ha definido su propia enumeración en Objective-C y no necesita clientes para manejar casos desconocidos, puede usar la macro NS_CLOSED_ENUM en lugar de NS_ENUM. El compilador de Swift reconoce esto y no requiere cambios para tener un caso predeterminado.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda