3
respostas

Verificação de nil no viewController

Oi, eu vi os primeiros vídeos e fiquei querendo entender como imprimir os valores das variáveis sem o Optional()

Como eu faço essa verificação, porque eu quero fazer o print das duas variáveis, coloca um and no if? No exemplo faz a verificação de uma por uma, mas no exemplo tem duas variáveis que são chamadas juntas no print() Se eu testo e coloco ? ele continua com o Optional e o valor dentro.

 //variável terá um valor
    @IBOutlet var nomeTextField: UITextField?

    @IBOutlet var felicidadeTextField: UITextField?

    //objective c
    //crash = quando o app fecha inesperadamente

    @IBAction func adicionar(_ sender: Any) {
        //let é constante
        //let nome: String = "churros"
        //var felicidade: String = "5"
        //print("comi \(nome) e fiquei com felicidade: \(felicidade)")

        let nome = nomeTextField?.text
        let felicidade = felicidadeTextField?.text

        print("comi \(nome) e fiquei com felicidade: \(felicidade)")
    }
3 respostas

Oi Gisele, tudo bem?

Você pode "desembrulhar" uma opcional de diversas maneiras. Recomendo muito a leitura de um artigo que temos aqui na plataforma falando exatamente sobre esse tópico: https://www.alura.com.br/artigos/ios-opcionais-swift

Espero ter ajudado, abraços!

Olá, obrigada por responder, eu li esse artigo, talvez eu não tenha conseguido formular bem a pergunta.

Entendi que usasse o if else para fazer o unwrapping da variável, o que eu tenho dúvida é quanto a sintaxe, nos exemplos a aplicação é um pouco diferente, porque a ? está no TextField, na maioria já faz o print da variável, mas e se eu quiser utilizar o valor da variável depois?

A opção que mais se aproxima acho que seria essa?

 if let nome = nomeTextField?.text, let felicidade = felicidadeTextField?.text {
            print("comi \(nome) e fiquei com felicidade: \(felicidade)")
        }

Oi Gisele, tudo bem? Para utilizar varias vezes uma variavel com seguranca sem precisar verificar sempre pode-se usar o guard let, como no exemplo:

    guard let nome = nomeTextField?.text else { return } 
    guard let felicidade = felicidadeTextField?.text else { return }

    //Agora podemos usar ambas variaveis com seguranca

    print(nome)
    print(felicidade)

Espero ter ajudado :)