Como converter e verificar tipos no Swift | Protocols & Type Casting
-
Para validar um valor e verificar e checar o real tipo em Swift, podemos utilizar o operador is. Se o conteúdo original dessa instância for do tipo Secretária, executamos essa instrução. Outro operador interessante é o as. Com ele, podemos ir além e até mesmo alterar a forma como nos referenciamos a um valor. Nesse caso, a variável foi instanciada como Secretária. E para alterar a forma como nos referimos a esse valor, criamos uma nova variável chamada …. e nessa variável, inserimos o valor de Maria como sendo do tipo Funcionário. Através dessa nova variável, podemos nos referir a esse mesmo valor como sendo do tipo Funcionário.
Observe que esse Type Casting aconteceu entre o tipo Secretária, que é uma classe, e o tipo Funcionário, que é um protocolo. É como se estivéssemos convertendo um valor de um tipo mais especializado para um tipo mais genérico, uma transformação de cima para baixo, ou seja, um Up-casting.
Da mesma forma que podemos subir nessa cadeia, também podemos descer, ou seja, realizar um Casting, convertendo um valor de um tipo mais genérico para um tipo mais específico. Agora vamos inicializar essa instância nos referindo a ela como Funcionário. Vamos criar uma nova variável que receberá o valor de Funcionário convertido para o tipo Secretária. Observe que, dessa vez, ao lado do operador as, existe uma exclamação. Anteriormente, tínhamos um Up-casting e, nesses casos, o compilador já sabe que o valor em questão está em conformidade com o protocolo. No entanto, esse processo de Type Casting pode falhar, e por isso o retorno dessa operação será um valor opcional.
A recomendação é que, em vez de forçar o resultado desse casting, você utilize um processo seguro de unwrapping. Veremos uma maneira recomendada de fazer isso..