Coleções: Dictionary
O Dicionário – conhecido também como vetor associativo – é um tipo de coleção que contém pares chave—valor. Não possui ordenação e cada chave acessa o valor diretamente associado a ela.
Tanto chave quanto valor tem seus tipos definidos no momento da criação do dicionário.
Criação
// A representação de um _Dictionary_ é semelhante ao _Array_,
// para representar o conjunto chave--valor usamos `:`
let ninho = [ "linguagem": "swift" ]
let pessoa = [
"nome": "Claudio",
"sobrenome": "Farias",
"nacionalidade": "Brasileiro"
]
// Podemos explicitar os tipos
var produtos: [Int: String] = [
2041: "Camiseta Vermelha",
3872: "Calça Azul",
3018: "Regata branca"
]
// Dictionary vazio
var numerosChamada = [Int: String]()
// ou
var imagens: [String: NSURL] = [:]
Manipulação
// Acessando _valores_ através da _chave_
pessoa["nome"]
produtos[3872]
// Como podemos tentar acessar uma _chave_ que não contém _valor_, o retorno vem
// empacotado em um _Optional_.
print(pessoa["nome"]) // imprime "Optional("Claudio")"
// Desempacotamos o _valor_
if let produto = produtos[2041] {
print("O produto é \(produto)")
} else {
print("Este produto não existe no nosso catálogo")
}
// Valores padrão e desempacotamento
// Caso a _chave_ tenha um _valor_ atribuído será retornado desempacotado, senão
// temos como retorno o valor padrão.
ninho["url", default: "https://ninhodaandorinha.com.br"]
// Adicionando elementos
imagens["gif"] = "http://gph.is/2cxrElv"
// Removendo elementos
produtos[3018] = nil
//ou
produtos.removeValue(forKey: 3018)
// Removendo todos os elementos.
imagens.removeAll()
Funcionalidades comuns
// Total de elementos
imagens.count
// Verifica se o dicionário está vazio
produtos.isEmpty
// Contém um determinado elemento utilizando uma operação
pessoa.contains { key, value in
return value == "Farias"
}
// Percorrendo o dicionário
for (codigo, produto) in produtos {
print("O código \(codigo) é do produto \(produto)")
}
// Apenas as chaves
for chave in pessoa.keys {
print("A pessoa tem \(chave)")
}
// Apenas os valores
for nome in numerosChamada.values {
print("O aluno \(nome) está na chamada!")
}
Dica
Procure deixar as chaves dos seus dicionários em arquivos de configuração para facilitar no caso de mudanças.
Não deixe de se aprofundar ainda mais sobre dicionários lendo a documentação oficial.
Até a próxima!
>}