Enum customizado em swift
Enum como é mais comumente conhecido, basicamente uma abreviação para enumerações, sua descrição é bem exemplificada na documentação da Apple.
''Uma enumeração define um tipo comum para um grupo de valores relacionados e permite que você trabalhe com esses valores de uma maneira segura para o tipo em seu código.''
Enumerações suportam diversas funcionalidades que geralmente temos em nossas classes, são muito flexíveis e podemos resolver muitos problemas com seu uso. Mas o intuito desse tutorial não é abordar as funcionalidades e sim como customiza-lo afim de descrever, como podemos criar uma customização de nossos enums em nosso dia a dia.
Geralmente usamos valores brutos associados em nosso enums (String e Inteiros)
enum Region: String {case north, south, east, west}
Mas podemos ir muito mais além…
No Swift temos o protocolo RawRepresentable que transforma um tipo em outro associado, porém mantendo o valor original.
https://gist.github.com/diegocrozare/7ecee3d58ccd92255ce1cdf2c40d8ded#file-swift
No exemplo foi criado um enum de Enviroment, configurando um valor associado de EnviromentConfiguration e mantendo o valor original.
E poderíamos usa-lo dessa forma
let enviromentProd = Enviroment.production.rawValue
let enviromentDevelopment = Enviroment.development.rawValue
print(enviromentProd.baseUrl1) // https://service1.prod.com.br
print(enviromentDevelopment.baseUrl2) // https://service2.dev.com.br
Esse exemplo foi para um cenário especifico, mas da para ter uma ideia das possibilidades que o enum nos traz