Hoje vamos falar um pouco sobre os Enums no Swift 2.2 .
Os Enums servem para categorizar valores, como por exemplo os naipes de um baralho, que em Swift podem ser definido das seguintes maneiras:
[markdown]
“`
enum Naipes {
case Ouros
case Copas
case Espada
case Paus
}
“`
[/markdown]
ou
[markdown]
“`
enum Naipes {
case Ouros, Copas, Espadas, Paus
}
“`
[/markdown]
E ele pode ser usado da seguinte forma:
[markdown]
“`
//Setando diretamente na inicialização da variavel
let meuNaipe = Naipes.Ouros
//Definindo uma variavel do tipo Naipe, e setando o valor posteriormente
var meuOutroNaipe: Naipes
meuOutroNaipe = .Espada
“`
[/markdown]
Podemos também criar enums com valores associados.E Podemos acessar esses valores usando a propriedade rawValue.
Como por exemplo, um enum para os meses do ano, pode ser iniciado das seguintes maneiras:
[markdown]
“`
enum Mes: Int {
case Jan = 1
case Fev = 2
case Mar = 3
case Abr = 4
case Mai = 5
case Jun = 6
case Jul = 7
case Ago = 8
case Set = 9
case Out = 10
case Nov = 11
case Dez = 12
}
“`
[/markdown]
ou
[markdown]
“`
//Assume valores de 2 a 12 para os enumeradores sem valor associado diretamente
enum Mes: Int {
case Jan = 1, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez
}
“`
[/markdown]
Variáveis do tipo do enum Mes, podem ser criadas das seguintes maneiras:
[markdown]
“`
//utilizando o “nome” do enumerador
let mes = Mes.Mar
print(mes.rawValue) // 3
//utilizando o valor numérico correspondente ao mês, utilizando o rawValue
let outroMes = Mes(rawValue: 6) // Jun
“`
[/markdown]
O enum no Swift também nos permite criar funções internas, o que facilita e agiliza muito o desenvolvimento. Veja o exemplo utilizando o enum Mes, com duas funções.
[markdown]
“`
enum Mes: Int {
case Jan = 1, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez
func nomeMes() -> String {
switch self {
case .Jan:
return “Janeiro”
case .Fev:
return “Fevereiro”
case .Mar:
return “Março”
case .Abr:
return “Abril”
case .Mai:
return “Maio”
case .Jun:
return “Junho”
case .Jul:
return “Julho”
case .Ago:
return “Agosto”
case .Set:
return “Setembro”
case .Out:
return “Outubro”
case .Nov:
return “Novembro”
case .Dez:
return “Dezembro”
}
}
}
“`
[/markdown]
Podemos usar as funções da seguinte forma:
[markdown]
“`
print(mes.nomeMes()) //Março
print(outroMes!.nomeMes()) //Junho
“`
[/markdown]
Os enums no Swift nos permite também, passar parâmetros para os Enumeradores, veja o exemplo abaixo, utilizando nacionalidade.
[markdown]
“`
enum Nacionalidade {
case Estrangeira
case Brasileira(documento: String)
func Documento() -> String {
switch self {
case .Estrangeira:
return “Nacionalidade estrangeira, não tem documento associado”
case let .Brasileira(documento):
return “Nacionalidade Brasileira, documento: \(documento)”
}
}
}
var nacionalidade = Nacionalidade.Estrangeira
print(nacionalidade.Documento()) //Nacionalidade estrangeira, não tem documento associado
nacionalidade = .Brasileira(documento: “123.234.345-45”)
print(nacionalidade.Documento()) //Nacionalidade Brasileira, documento: 123.234.345-45
“`
[/markdown]
Com isso já conseguimos usar os recursos mais comuns dos enums do Swift 2.2
O arquivo .playground com os códigos desse post esta disponível no github