Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

349
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda