Aprende Swift 3

Opcionales explícitos

¡Prueba gratis durante 10 días

nuestros 1220 cursos !

Prueba gratis Mostrar modalidades de suscripción
Los opcionales han agregado un nuevo nivel de abstracción que nos permite resolver de manera elegante los escenarios especiales, sobre todo cuando tenemos unwraps de opcionales que son implícitos dentro de otras funciones.

Transcripción

Si hay algo que es muy poderoso en "Swift" y que a veces se mal usa en los proyectos son los opcionales. ¿Por qué? Bueno pues porque en realidad pocos lenguajes lo tienen, los lenguajes de última generación como ["C Lang"] ya lo tienen, incluso creo que en algunos casos, hay operadores seguros en "Ruby" que lo pueden utilizar. Pero básicamente los opcionales que tiene "Swift" nos ayudan a poder envolver cierta complejidad, casos que no esperamos dentro de las variables. Si mal no recuerdas los opcionales es, esta anotación que nos permite identificar que una variable puede estar completamente llena con un tipo completamente valido o puede ser "Nil", básicamente o es "String" o es "Nil". Estos opcionales nos permiten poder controlar el flujo de errores de una manera más sencilla, pero en "Swift 3" se descubrió que había un pequeño problema con la cantidad de anidados opcionales que podíamos tener dentro de un arreglo y eso se solucionó. Ahora, esto no solamente aplica para arreglos sino aplica para muchas otras cosas, vamos a ver el ejemplo. Aquí tengo este "Playground", voy a guardarlo aquí en el escritorio, yo aquí ya tengo un ejemplo de cuando sí se puede utilizar, por ejemplo, primero esto, yo aquí tengo una variable, bueno de hecho es una constante llamada Five, que es un opcional desenvuelto. Dice que está implícitamente desenvuelto el opcional, ¿de qué tipo? Es de tipo "Int", y ese es el tipo, es un opcional desenvuelto implícitamente. ¿Por qué? Bueno pues, porque a la hora de definirlo, le estoy poniendo el signo de admiración. Recuerda que el signo de admiración es con el que desenvolvemos los opcionales. Si yo le pusiera aquí el signo de interrogación estaría convirtiéndolo en un opcional y para todo el uso que yo necesite tendría que estarle poniendo el signo de admiración cada vez que lo necesite, entonces lo ahorramos y decimos "bueno este puede ser Nil pero si me lo pides te voy a entregar el valor completo", esto nos lleva a otro tipo, que es este, el implícito. El problema de esto es que nosotros podemos estar utilizándolo en diferentes lados, por ejemplo, ¿qué pasa si yo hago referencia a él? Bueno pues, "other" que hace referencia a "Five" debería de tener el mismo tipo ¿no?, implícito en "repet: Optional", pero no, ¿Por qué? Porque ahora este "other" en realidad es un opcional de tipo "Int". ¿Cómo? Bueno muy sencillo, en realidad este es un opcional, nada más le estamos dando el atributo de que lo desenvuelva cuando lo necesitemos, aquí le estoy haciendo una referencia no lo estoy utilizando por lo tanto, sigue siendo un opcional. Ahora, el siguiente ejemplo, ¿qué pasa si yo lo ocupo? Bueno pues, entonces cinco más cero, aquí sí lo estoy utilizando por lo tanto sí se está desenvolviendo y "Result" se vuelve de tipo entero, ya no es un opcional y ya no es un implícito o un tipo implícito. Bueno pues, esto se puede volver muy, muy confuso, el problema era este si nosotros teníamos múltiples arreglos o métodos en los cuales estuviéramos recibiendo el opcional, de alguna manera nosotros estábamos regresando valores enteros que estaban implícitamente desenvueltos y los estábamos colocando dentro de arreglos que podían ser validos u opcionales, pero ¿qué pasa si yo le pedía que este tipo también fuera de tipo implícito desenvuelto? ¿Cuál era el problema? Bueno pues, "method", en realidad la firma sí es compatible, el regresa un tipo implícito "unwrapped optional" y el arreglo también dice que es de ese tipo pero si tú te fijas, a la hora de utilizar-- vamos a cambiarle aquí a "Result 3". Result 3, Y yo quisiera acceder al primer elemento, tendría que volver a hacer el "unwrapped" dos veces, para poder sacar el tipo final de nuestro elemento. Ahora tu puedes decir "Bueno, si lo usas pues ya viene desenvuelto, ¿no?" Pues sí, pero viene desenvuelto dos veces, uno por el Método y otro por el tipo, lo cuál puede ser muy complicado. Entonces simplemente lo que hicieron fue, esta de aquí ya no se permite, y si quieres hacerlo tienes que tener mucho cuidado cuando estás utilizando este símbolo de admiración. Ahora vamos a poner un caso práctico, todas las referencias que tienes a un "Storyboard" o a un XYB, en tu vista vienen así por "default" cada vez que tú haces una conexión entre un botón y tu "Bio-Controller", todos traen implícito "unwrapped optional", así que si viene vacío, pues entonces puede hacer un "crash" en tu aplicación, y si tú los almacenas entonces puedes estar teniendo este problema. No te preocupes la mayoría de las ocasiones, si te fijas te va a arrojar aquí el error y te va a decir "oye, esto ya no se puede" o "simplemente reemplázalo con el signo de interrogación". Así va a ser muy claro que necesitas hacer explícito el valor de tu elemento. De esta manera vas a poder utilizar muy bien los opcionales desenvueltos y tener muchísimo cuidado con como haces las referencias a ellos.

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.
 
Fecha de publicación:22/03/2017
Duración:3:14 horas (31 Videos)

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.