Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Teste if nil (variável nula)

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?

2 respostas
solução!

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!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software