Aprende Swift 3

Protocolos y extensiones

¡Prueba gratis durante 10 días

nuestros 1220 cursos !

Prueba gratis Mostrar modalidades de suscripción
Lo magnífico de Swift es que las extensiones nos permiten aprovechar los protocolos y, si conoces de otros lenguajes, nos permitirán agregar funcionalidad por bloques a diferentes clases que lo necesiten.

Transcripción

Pienso que los protocolos son una de las secciones más importantes de todas. Swift ha sido llamado un lenguaje orientado a protocolos. Básicamente son los mismos protocolos que teníamos en Objective C pero nos permiten extender la funcionalidad de nuestras estructuras y clases de una manera más explícita. No es fácil tomarlo de entrada pero ya conforme los vas utilizando y vas aprendiendo de sus funcionalidades simplemente se te va haciendo más natural implementar todo en un protocolo Así que amárrate los cinturones porque vamos a comenzar con la parte más importante de programación orientada a protocolos. Primero: voy a escribir aquí un protocolo que va a ser llamado "Talking" voy a abrir y cerrar llaves y con eso será más que suficiente. Al igual que en Objective-C solo necesito colocar la firma del método. En este caso "func" y aunque te ponga todo el autocompletado no lo vas a necesitar todo. Vamos a escribir "sayHello". Listo. No necesitas colocar la implementación solamente necesitas colocar la firma del método. Nota y paréntesis muy grandote si tú necesitas que este protocolo esté funcionando en Objetive-C por favor, antes de esto, le vas a poner @objc si no, Objetive-C nunca va a ver este protocolo y viceversa. Pero bueno, ahorita no estamos hablando de Objetive-C. Esos ya son viejos días. Vamos a hablar acerca de las extensiones. Las extensiones son los "category extensions" que tenemos en Objective-C pero aquí simplemente se llamaron extensiones y nos sirven de una manera más sencilla. Si has programado por ejemplo en Ruby los módulos, básicamente son extensiones el tema es que para poderlos utilizar necesitas pegarlos directamente a un objeto o a una clase. Vamos a definir una extensión. La extensión que va a ser la implementación explícita del protocolo "Talking" ¿Cómo funciona? Muy simple. Extensión, el nombre de lo que vas a extender, en este caso vamos a hacer la extensión de un protocolo y a estos dos se les llama como "protocol extensions" defines el método y defines cómo se implementa. Aquí sí vamos a colocar la implementación. Pero bueno, hasta aquí todo está muy bien. Generamos el protocolo y generamos la extensión con su implementación. No hay ningún problema. Lo importante es lo siguiente. ¿Cómo empezamos a utilizar este protocolo "extension"? Necesitas primero generar una clase. Una clase o una estructura, tú decides. Y listo, ya tienes un elemento humano que puede decir "sayHello". ¿Cómo lo sé? Muy sencillo. Voy a abrir y cerrar paréntesis de mi instancia. "me.sayHello" ¿Ok? Ahí ya está el método y se está ejecutando no hay ningún problema. Esto podría ser una clase o podría ser una estructura seguiría funcionando. Ok. Ahora, lo importante es que no solamente puedes agregarle uno si yo quisiera otro puedo ponerle aquí coma otro protocolo y otro y otro y otro y así. Voy a poder agregar todos los que necesite pero eso no es lo que es más importante si no es que también puede ser en otro sentido. ¿Cómo? Muy sencillo. Tú puedes tener aquí una clase "Dog" que no haga nada pero puedes decir cómo va a funcionar una extensión de "Dog", por ejemplo "class Dog" que implementa el protocolo "Talking" ¿Qué tengo que hacer aquí? Simplemente escribir "func" de hecho, si te das cuenta, aquí ya nos apareció un error. Dice "oye, sabes qué, hay una redeclaración de Dog" Claro, aquí hay un pequeño error. Este "class" no debería ser "class" debería ser "extension". Ahora sí va a funcionar. Entonces estamos extendiendo "Dog" en su implementación de "Talking". Ahora sí voy a poder copiar y pegar esto porque no lo quiero volver a escribir y le voy a cambiar aquí "Woof" Ya tengo una clase "Dog" que está implementando el protocolo "Talking" y esta es un protocolo "extension". Estoy haciendo que solamente la clase "Dog" esté extendiendo el protocolo "Talking" Si te fijas, va a ser muy sencillo que el perro pueda estar hablando con la misma interfaz que estamos diseñando en el protocolo bajo otras características. ¿Cómo puedes utilizar esto en tus proyectos? Bueno, el ejemplo más rápido que yo he utilizado en los míos es por ejemplo en la capa del modelo. La capa del modelo por lo regular es una estructura pero casi todos los modelos necesitan una conexión a un servicio. Y si te fijas, los métodos del servicio siempre son iguales apuntan a la misma URL y cambian solamente los parámetros o el "endpoint". Esos "endpoints" y esos parámetros los hago con protocolos y extensiones para decir que cierto modelo va a estar cambiando su comportamiento dependiendo del protocolo que esté utilizando e incluso puedo estar haciendo elementos que no necesariamente estén pidiendo cosas a red y eso es muy importante. Ahora también puedes colocar dentro de las extensiones aquí por ejemplo, cláusulas "where". Con estas cláusulas vas a poder definir que tal tipo cumpla con una condición como por ejemplo que todas hereden de humano o que todas hereden de animal y solamente esas son las que estás definiendo aquí adentro. Aunque no es muy común, sí te puede ayudar muchísimo a organizar todo el proyecto de una manera más limpia y eficiente.

Aprende Swift 3

Descubre Swift 3, la versión más actual del lenguaje de Apple; conoce todas sus novedades y aprende el lenguaje de código abierto desde cero para desarrollar tus aplicaciones.

3:14 horas (31 Videos)
Actualmente no hay comentarios.
 

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.