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

343
Vistas
iOS Swift, Enum CaseExtensión iterable

Estoy tratando de escribir una extensión para una enumeración que es CaseIterable para que pueda obtener una matriz de valores sin procesar en lugar de los casos, aunque no estoy completamente seguro de cómo hacerlo

 extension CaseIterable { static var allValues: [String] { get { return allCases.map({ option -> String in return option.rawValue }) } } }

necesito agregar una cláusula where de alguna manera, si no tengo una cláusula where obtengo un error que dice 'map' produces '[T]', not the expected contextual result type '[String]'

¿Alguien sabe si hay una buena manera de hacer esto?

Mis enumeraciones en las que quiero que funcione esta función se ven un poco así

 enum TypeOptions: String, CaseIterable { case All = "all" case Article = "article" case Show = "show" }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No todos los tipos de enumeración tienen un RawValue asociado y, si lo tienen, no es necesariamente un String .

Por lo tanto, debe restringir la extensión a los tipos de enumeración que son RawRepresentable y definir el valor de retorno como una matriz de RawValue :

 extension CaseIterable where Self: RawRepresentable { static var allValues: [RawValue] { return allCases.map { $0.rawValue } } }

Ejemplos:

 enum TypeOptions: String, CaseIterable { case all case article case show case unknown = "?" } print(TypeOptions.allValues) // ["all", "article", "show", "?" ] enum IntOptions: Int, CaseIterable { case a = 1 case b = 4 } print(IntOptions.allValues) // [1, 4] enum Foo: CaseIterable { case a case b } // This does not compile: print(Foo.allValues) // error: Type 'Foo' does not conform to protocol 'RawRepresentable'
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