Eu estou trabalhando numa aplicação e preciso verificar se um optional é nil para decidir se executo um comando.
Neste caso, a melhor forma é mesmo if variavel != nil
correto?
Eu estou trabalhando numa aplicação e preciso verificar se um optional é nil para decidir se executo um comando.
Neste caso, a melhor forma é mesmo if variavel != nil
correto?
Suponha a seguinte variável do tipo String optional:
var variavel : String?
Eu quero escrever essa string em minúsculas, somente se ela existir. Então, posso fazer como você disse:
if variavel != nil {
variavel.lowecased()
}
Porém, o Swift nos permite um atalho quando queremos chamar um método numa variável optional somente se ela não for nula:
variavel?.lowercased()
Esse recurso chamado optional chaining representa o mesmo que o if: se variavel
não for nula, chama o método lowercased()
, do contrário, não faz nada.
Se a variável for usada dentro do if/else:
if variavel != nil {
metodo(variavel!)
}
Você pode fazer uso do if-let:
if let variavelNaoNula = variavel {
metodo(variavelNaoNula)
}
(Veja que não precisamos fazer o unboxing, pois o if-let já fez isso)
Temos também o guard que é semelhante ao if-let:
guard let variavelNaoNula = variavel else { return; }
metodo(variavelNaoNula);
O legal do guard é que eliminamos um nível de identação no código. É bastante usado para verificação de erros, tratamento de inputs, onde ficaríamos com um monte de ifs encadeados.
Agora, no seguinte cenário em que a variavel
não é usada dentro do if/else não tem muito o que fazer:
if variavel != nil {
metodo1()
} else {
metodo2()
}
Muito obrigado Felipe!