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

Protocolo

Olá, e aí tudo bem? Eu fiz esse playground básico para ver como funciona o Protocol, mas não consegui fazer acontecer. Eu acho que entendi o conceito. Se puderem me ajudar desde já fica minha gratidão.

class pessoa: delegateCPF { private var nome: String? private var idade: Int? private var cpf: Int?

init(nome: String?, idade: Int?, cpf: Int?) {
    self.nome = nome
    self.idade = idade
    self.cpf = cpf
}

func getNome() -> String{
    var coletaNome = ""

    if let nome = self.nome{
        coletaNome = nome
    }
    return coletaNome
}

func getIdade() -> Int{
    var coletaIdade = 0

    if let idade = self.idade{
        coletaIdade = idade
    }
    return coletaIdade
}

func getCPF() -> Int{
    var coletaCPF = 0

    if let cpf = self.cpf{
        coletaCPF = cpf
    }
    return coletaCPF
}

}

protocol delegateCPF { func getCPF() -> Int }

var delegate: delegateCPF? var person = pessoa(nome: "Leo", idade: 12,cpf: 031)

var pega = delegate?.getCPF()

print("Meu nome é (person.getNome()) e tenho (person.getIdade()) anos.")

//quero imprimir através do delegado meu cpf, mas só retorna nil print("(pega)") person.getCPF()

3 respostas

Tenta colocar

var delegate: delegateCPF?

init() {
    self.delegate = pessoa()
}

Você tem que instanciar a sua classe, que recebe o protocol e expoem os métodos para serem utilizados

Mas vou instanciar na minha classe onde se encontra o método ou na outra classe de onde vou usar o método do delegate?

solução!

Na sua classe aonde você vai utilizar essa sua classe criada com protocol. Na mesma classe aonde você tem isso: var pega = delegate?.getCPF()