Aprende Swift 3

Propiedades e inicializadores

Prueba ahora LinkedIn Learning sin cargo y sin compromiso.

Prueba gratis Mostrar modalidades de suscripción
Las clases y estructuras cuentan con la posibilidad de tener propiedades e inicializadores que nos permitan definir cómo debe comportarse una variable. Te mostraré cómo crear inicializadores con Stored y Computed Properties.

Transcripción

Ok, pues vamos a hablar acerca de las propiedades. Las propiedades son pequeñas referencias que van a vivir de nuestros objetos o estructuras para poder guardar el estado de nuestras referencias. ¿Cómo funciona? Bueno, pues básicamente, si tú conoces algún otro lenguaje de programación es tan sencillo como las propiedades de instancia que podemos tener en una definición de clase. Por ejemplo, yo aquí voy a definir una estructura que se llame "humano". Ya tengo mi estructura. Ahora, ¿cómo voy a colocar una propiedad? Las propiedades normales aquí las llamamos "Stored Properties" o propiedades almacenadas. Listo. Para poderlas definir, es simplemente como si estuvieras definiendo cualquier otra variable dentro de una función. Pones el tipo de referencia, si es mutable o inmutable. El nombre de la referencia, dos puntos (:) y su tipo. Las puedes inicializar aquí o puedes ahorrarte el tipo, si quieres, y colocar también su valor. Yo ahora los necesito de esta manera para poder trabajar más adelante. Pero bueno, de que puedes cambiarlo, lo puedes cambiar. Ahora, estas son las regulares, ya lo hemos visto, no me emociono, pero en donde sí me emociono es en algo llamado "Computer Properties". Las Computer Properties, si no las tuviéramos utilizaríamos funciones para hacerlas. Son realmente mágicas. ¿Cómo funcionan las Computer Properties? Muy sencillo. Estas no almacenan un valor sino que simplemente se están calculando con el tiempo. Mira, por ejemplo, yo a mi instancia de "humano", lo que voy a hacer es que le voy a dar en una cadena, mi fecha de nacimiento, pero yo en realidad necesito un objeto date. Ese objeto date lo tengo que transformar. Y si tú ya conoces Foundation, sabes que necesitas un Date Foot Maker, traerte o darle el formato correcto y después traer y generar la fecha a partir del formato que le estamos dando. Si te fijas aquí yo ya estoy haciendo referencia a la cadena que me están dando por afuera. Entonces, esto yo lo podría hacer con una función, ya sabes "Fn+Birth". Incluso que no reciba parámetros, pero que me regrese un date El tema es que esto no necesariamente tiene que ser una función porque no hace nada, sino simplemente me da una información en un formato muy específico lo cuál es muy, muy útil. Ahora, ¿cómo lo puedo utilizar? Bueno, pues, muy sencillo. Yo aquí ya tengo este ejemplo, simplemente voy a traerme estas líneas, y mira, aquí yo voy a hacer una referencia que se llama "Me" de tipo "human", le voy a pasar el nombre y la fecha de nacimiento. Ahora, si tú te fijas yo voy a traerme aquí un calendario. No importa, esto es simplemente para fines educativos. Este calendario yo le voy a pedir que me traiga el mes de mi fecha. Yo ya sé que birth en realidad es de tipo "date", y este date es el que me va a traer el mes de nacimiento en el que yo le definí aquí. Si yo le cambio a 10, por ejemplo, y se vuelve a ejecutar, solamente me va a traer este pedazo de información. Las "Computer Properties" son poderosas y en realidad son muy útiles. Pero no es lo único que tenemos dentro de las propiedades. También tenemos "Property Observers" o observadores de cambios en las propiedades. ¿Cómo funcionan? Muy sencillo. Imaginemos que yo tengo un e-mail. Dentro de la definición de mi estructura yo le voy a decir: "¿Sabes qué? la estructura o un humano va a tener un e-mail, este, va a ser de tipo "String" y por default va a estar vacío, no me interesa llenarlo. Pero, lo que sí es muy importante es que cuando me vayan a dar un nuevo valor, yo lo voy a recibir aquí, en "new e-mail", y voy a poder hacer algo con este valor. No necesito asignarlo, porque después de este "will set", lo va a asignar y lo va a cambiar. Así que, sería inútil que yo dijera: "e-mail = new e-mail". Eso no es necesario, solo lo va a hacer. Pero sí puedo hacer algo como transformarlo o validarlo o tal vez enviarlo por red o tal vez asignar el Log. Eso sería muy útil, por ejemplo, si tenemos un sistema de Password. Si el usuario cambia el password, en realidad antes de saber si lo puedo guardar, tengo que saber si es largo o si es el mismo que el anterior, o en caso de que todo esté bien, simplemente voy a mandar al Log que algún usuario hizo cambio de su password. Es muy importante que tú identifiques cuándo poder utilizar el "will set" y, sobre todo, el "did set". Una vez que ya se cambió, este bloque de códigos se va a mandar a llamar. ¿Para qué sirve? Muy simple. Sirve para que tú puedas identificar en qué momento se hizo el cambio "después de". Tal vez ya se hizo el cambio, ya se guardó en memoria, pero tú necesitas notificar otro objeto para que pueda hacer todos los cambios en las referencias . ¿Cómo nos podemos dar cuenta de que esto funciona? Bueno pues, muy sencillo. Primero, identifica que si tú tienes este e-mail, yo, lo primero que tengo que hacer es definir un inicializador. Los inicializadores en las estructuras ya vienen por default. Por ejemplo, si yo quiero escribir a "human", y abriera paréntesis, me va a mostrar un inicializador con todos los parámetros y propiedades que yo necesito. Esto no pasaría si fuera una clase, si fuera una clase tendría que hacerlo de manera manual, pero también puedes hacerlo de manera manual en una estructura. Por ejemplo, aquí yo voy a colocar un inicializador personalizado que en realidad solo tome el nombre y la fecha de nacimiento. De esta manera, si te fijas ya se fue el pequeño error que teníamos aquí. Bueno, aquí abajo voy a hacer el cambio del correo electrónico porque yo ya sé que por "default" está vacío... ...aquí. Listo. Entonces, lo primero que hizo fue "old", y está vacío, y el nuevo es el "other@email.net". Cuando ya se hizo el cambio, se queda el nuevo. Si lo vuelvo a cambiar me dice, "ok, el viejo es 'other@email.net' y el nuevo es 'other@serve.net'", y este es el que se está quedando al final. Para esos son los "Properties Observers". Todas estas funcionalidades son nuevas en el lenguaje. Esto no lo teníamos en Objective C. Es muy importante que aprendas a utilizarlo y que lo explotes de la mejor manera en tus aplicaciones.

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.