Enums em Swift: organize seu código e evite bugs

Rocketseat

Navegação Rápida:
O que raios é um Enum?
1Criando seu primeiro Enum (sintaxe básica)
2Usando Enums na prática (mãos à obra)
3Por que Enums são demais?
4O casamento perfeito: Enums e
5Turbinando Enums: Raw Values
6A mágica dos Associated Values (valores associados)
7Enums com poderes extras: métodos e propriedades
8Conclusão
9
Imagine que você está criando um app e precisa lidar com diferentes status de um pedido: "processando", "enviado", "cancelado". A solução mais rápida parece ser usar strings:
var statusPedido = "processando"
Mas basta um pequeno erro de digitação, como
"processsando"
, e o código já está quebrado. Sem contar que ninguém saberia de cara o que significa status = 2
. É aqui que entram os Enums em Swift: uma forma elegante e poderosa de representar conjuntos de valores relacionados, deixando seu código mais seguro, legível e fácil de manter.Neste artigo, você vai entender o que são Enums, por que eles são incríveis e como usá-los na prática para escrever código Swift como um verdadeiro profissional.
O que raios é um Enum?
Em Swift, um Enum (ou tipo enumerado) é um tipo personalizado que agrupa um conjunto fixo de valores relacionados. Ele permite que você defina, de forma clara, todos os estados possíveis de algo.
Pense em um semáforo:
enum Sinal { case vermelho case amarelo case verde }
Com isso, você criou um novo tipo chamado
Sinal
, que pode assumir exatamente três valores: vermelho
, amarelo
ou verde
.Simples, direto e sem chances de erro!
Criando seu primeiro Enum (sintaxe básica)
Vamos criar um Enum que represente o status de um pedido:
enum StatusPedido { case processando case enviado case cancelado case entregue }
Você acabou de declarar quatro "casos" (possíveis estados) para o Enum
StatusPedido
. Agora, você pode usar esse tipo para representar pedidos em diferentes fases.Usando Enums na prática (mãos à obra)
Declare uma variável do tipo Enum:
var meuPedido = StatusPedido.processando
Graças à inferência de tipo do Swift, depois de inicializado você pode usar apenas:
meuPedido = .enviado
Comparando valores:
if meuPedido == .enviado { print("Pedido a caminho!") }
Simples assim!
Por que Enums são demais?
1. Legibilidade que salta aos olhos
Vamos comparar dois cenários:
Com Enum:
if statusPedido == .entregue { print("Pedido finalizado com sucesso!") }
Com String comum:
if statusPedido == "entregue" { print("Pedido finalizado com sucesso!") }
À primeira vista, parece igual. Mas pense no seguinte: e se alguém escrever "entregue" com erro? Ou em maiúsculas? Ou usar outro idioma? Com Enums, o código é mais expressivo, mais seguro e diz exatamente quais valores são válidos — sem espaço para ambiguidades.
2. Segurança de tipo (o compilador é seu aliado)
Com Enums, o compilador te protege de erros como este:
meuPedido = .recebido // Erro! "recebido" não está definido no Enum
Já com strings, esse tipo de erro só aparece em tempo de execução — ou pior, pode passar despercebido e causar bugs difíceis de rastrear.
3. Adeus números mágicos e strings soltas
Imagine esse código:
if status == 2 { print("Pedido entregue") }
O que é "2"? Alguém vai ter que checar a documentação ou buscar no código. Agora veja a versão com Enum:
if statusPedido == .entregue { print("Pedido entregue") }
Muito mais claro, certo? Você lê e já entende o que está acontecendo.
4. Manutenção facilitada (o Swift te ajuda!)
Se amanhã sua lógica mudar e você adicionar um novo status, como
.emTransito
, é só incluir no Enum:case emTransito
E o compilador vai avisar em quais
switch
você precisa atualizar a lógica. Isso reduz o risco de esquecer algo e aumenta a confiabilidade do código.O casamento perfeito: Enums e switch
switch meuPedido { case .processando: print("Ainda estamos preparando o seu pedido!") case .enviado: print("Seu pedido está a caminho!") case .cancelado: print("Pedido cancelado com sucesso.") case .entregue: print("Pedido entregue! Aproveite!") }
O mais legal? O compilador exige que você trate todos os casos, garantindo que nada fique de fora. Se esquecer um, ele avisa!
Turbinando Enums: Raw Values
Enums podem ter valores brutos (raw values), como
Int
ou String
:enum StatusCodigo: Int { case sucesso = 200 case erroCliente = 400 case erroServidor = 500 }
Ou:
enum Configuracao: String { case temaEscuro = "dark_mode" case temaClaro = "light_mode" }
Acessando valores:
let codigo = StatusCodigo.sucesso.rawValue // 200
E criando Enums a partir de valores:
if let status = StatusCodigo(rawValue: 400) { print(status) // erroCliente }
A mágica dos Associated Values (valores associados)
Com valores associados, cada case do Enum pode carregar informações diferentes:
enum ResultadoAPI { case sucesso(dados: String) case falha(codigoErro: Int, mensagem: String) } let resposta = ResultadoAPI.falha(codigoErro: 404, mensagem: "Não encontrado")
Extraindo os dados:
switch resposta { case .sucesso(let dados): print("Dados recebidos: \(dados)") case .falha(let codigo, let mensagem): print("Erro \(codigo): \(mensagem)") }
Perfeito para representar estados como resposta de uma requisição HTTP.
Enums com poderes extras: métodos e propriedades
Enums em Swift também podem ter propriedades computadas e métodos:
enum StatusPedido { case processando, enviado, cancelado, entregue var descricao: String { switch self { case .processando: return "Preparando" case .enviado: return "A caminho" case .cancelado: return "Cancelado" case .entregue: return "Entregue" } } } let status = StatusPedido.enviado print(status.descricao) // A caminho
Isso deixa seu Enum ainda mais poderoso e expressivo!
Conclusão
Se você chegou até aqui, parabéns! Agora você entende o que são Enums em Swift, como usá-los e por que são uma ferramenta essencial para escrever código mais legível, seguro e organizado. Seja para representar status de um pedido, tipos de erro ou resultados de uma API, os Enums são seus grandes aliados.
E isso é só o começo! Se você quer aplicar esse conhecimento construindo apps iOS completos com Swift, a Formação iOS com Swift da Rocketseat é o próximo passo natural. Lá você vai mergulhar de vez no ecossistema iOS, aprender as boas práticas e criar projetos reais que te preparam para o mercado.
Vamos juntos nessa jornada?
Artigos_
Explore conteúdos relacionados
Descubra mais artigos que complementam seu aprendizado e expandem seu conhecimento.