ii. aspectos esenciales de swiftfcqi.tij.uabc.mx/usuarios/glicea/documents/swift.pdfaspectos...

37
II. Aspectos Esenciales de Swift

Upload: others

Post on 28-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

  • II. Aspectos Esenciales de Swift

  • Aspectos esenciales de Swift Tipos básicos

    • Utilice let para utilizar una constante y var para utilizar una variable.

    • Todas las constantes y variables en Swift tienen tipo, pero no es necesario especificarlo. Al proporcionar un valor al momento de la creación, se permite al compilador inferir el tipo.

  • Aspectos esenciales de Swift Tipos básicos

    • Si el valor inicial no provee suficiente información (o si no hay valor inicial), especifique el tipo escribiéndolo después de la variable, separado por dos puntos (:).

  • Aspectos esenciales de Swift Tipos básicos

    • Los valores nunca se convierten a otro tipo de manera implícita. Si necesita convertir un valor a un diferente tipo, debe hacer una instancia del tipo deseado explícitamente.

  • Aspectos esenciales de Swift Tipos básicos

    • Hay una manera más simple de incluir valores en una cadena: Escriba el valor entre paréntesis y anteponga una barra (\).

    • A esto se le llama interpolación de cadena (string interpolation).

  • Aspectos esenciales de Swift Tipos básicos

    • Utilice opcionales para trabajar con valores que pueden ser omitidos.

    • Un valor opcional contiene un valor o contiene nil para indicar que el valor se omitió.

    • Para marcar un valor como opcional se coloca un signo de interrogación (?) después del tipo.

    • Para obtener el valor de un opcional, se desenvuelve utilizando el operador de desenvoltura (!).

  • Aspectos esenciales de Swift Tipos básicos

    • Los opcionales son pervasivos en Swift, y son muy útiles en situaciones donde un valor puede o no estar presente. Por ejemplo en la conversión de tipos.

  • Aspectos esenciales de Swift Tipos básicos

    • Un opcional implícitamente desenvuelto es un opcional que también puede ser utilizado como un valor no opcional, sin necesidad de desenvolver su valor cada vez que se accede.

    • Es muy rara la necesidad de crear un opcional implícitamente desenvuelto en tu propio código. Más bien, se utilizan para rastrear la conexión entre la interfaz de usuario y el código fuente.

  • Aspectos esenciales de Swift Tipos básicos

    • Un arreglo es un tipo de dato que sigue la pista a una colección de elementos ordenados.

    • Para crear un arreglo se utilizan los corchetes ([]) y se accede a sus elementos escribiendo el índice dentro de los corchetes.

    • Para crear un arreglo vacío, se utiliza la sintaxis de inicializador.

  • Aspectos esenciales de Swift Flujo de control

    • Swift tiene 2 tipos de enunciados para el flujo de control.

    • Los enunciados condicionales, como if y switch, verifican si una condición es verdadera (valor Boolean true) antes de ejecutar una pieza de código.

    • Los ciclos, como for-in y while, ejecutan la misma pieza de código muchas veces.

  • Aspectos esenciales de Swift Flujo de control

    • Los enunciados pueden anidarse para crear comportamiento más complejo en el programa.

  • Aspectos esenciales de Swift Flujo de control

    • Utilice atado opcional (optional binding) en un enunciado if para verificar si un opcional contiene un valor.

    • Si el valor opcional es nil, el condicional es falso y se saltará el código entre llaves. De otra manera, el valor opcional será desenvuelto y asignado.

  • Aspectos esenciales de Swift Flujo de control

    • Se puede utilizar un sólo enunciado if para atar varios valores.

    • El enunciado if se ejecuta solamente si todos los atados son exitosos.

    • Se puede agregar una clausula where para detallar más el condicional.

  • Aspectos esenciales de Swift Flujo de control

    • Un enunciado switch permite utilizar cualquier tipo de dato y una variedad de operaciones de comparación. En el ejemplo, el switch conmuta entre los valores de la cadena, comparando el valor con cada caso y ejecutando el correspondiente.

  • Aspectos esenciales de Swift Flujo de control

    • Se puede mantener un índice en un ciclo utilizando un rango.

    • Se puede utilizar el operador de rango medio abierto (..

  • Aspectos esenciales de Swift Funciones y métodos

    • Un función es una pieza de código reutilizable, con un nombre que puede ser referida desde cualquier parte de un programa.

    • Utilice func para declarar una función.

    • La declaración de una función puede incluir cero o más parámetros, escritos como nombre: Tipo.

    • Opcionalmente, una función puede tener un tipo de retorno, escrito después de ->, lo cual indica lo que la función regresa como resultado.

    • La implementación de la función va dentro de un par de llaves ({}).

  • Aspectos esenciales de Swift Funciones y métodos

    • Invoque una función escribiendo su nombre con una lista de argumentos entre paréntesis.

    • Al invocar una función, se pasa el valor del primer argumento sin su nombre y cada valor subsecuente con su nombre.

  • Aspectos esenciales de Swift Funciones y métodos

    • Como se puede notar, para invocar un método se utiliza la sintaxis del punto.

    • Al invocar un método, se pasa el valor del primer argumento sin su nombre y cada valor subsecuente con su nombre.

  • Aspectos esenciales de Swift Clases e inicializadores

    • En la programación orientada a objetos, el comportamiento de un programa se basa en interacciones entre objetos. Un objeto es una instancia de una clase.

    • Las clases almacenan información adicional a cerca de ellas como propiedades y definen su comportamiento como métodos.

    • Utilice la palabra class seguida del nombre de la clases para definir una clase.

    • Las propiedades se declaran igual que las variables o constantes y los métodos se declaran igual que las funciones.

  • Aspectos esenciales de Swift Clases e inicializadores

    • Para crea una instancia de una clase (un objeto) se deben colocar paréntesis después del nombre de la clase.

    • Utilice la sintaxis de punto para acceder a las propiedades y métodos de la instancia.

  • Aspectos esenciales de Swift Clases e inicializadores

    • La clase Shape carece de una cosa importante: un inicializador.

    • Un inicializador es un método que prepara la instancia de la clase para su uso, lo cual involucra asignar un valor inicial a cada propiedad y algunos otros ajustes iniciales.

  • Aspectos esenciales de Swift Clases e inicializadores

    • La palabra self se utiliza para distinguir las propiedades de los argumentos del inicializador.

    • Cada propiedad necesita tener un valor asignado, ya sea en su declaración o en el inicializador.

    • Para invocar un inicializador no se escribe init, se invoca colocando paréntesis con los argumentos apropiados después del nombre de la clase.

  • Aspectos esenciales de Swift Clases e inicializadores

    • Las clases heredan su comportamiento de sus clases padre.

    • Una clase que hereda comportamiento de otra clase se llama subclase de esa clase y la clase padre se llama superclase.

    • Las subclases incluyen el nombre de su superclase después de su nombre, separado por dos puntos.

    • Una clase puede heredar de sólo una superclase, pero esa superclase puede heredar de otra, formando una jerarquía de clases.

    • Los métodos de una subclase que sobreescriben métodos de la superclase se deben marcar con la palabra override.

  • Aspectos esenciales de Swift Clases e inicializadores

    • Note que el inicializador para la clase Square tiene 3 pasos:

    • Asignación de valores a las propiedades que declara la subclase (Square).

    • Invocación al inicializador de la superclase.

    • Cambio de los valores de las propiedades definidas en la superclase (NamedShape).

  • Aspectos esenciales de Swift Clases e inicializadores

    • Algunas veces la inicialización de un objeto debe fallar, por ejemplo cuando los valores provistos como argumentos están fuera de cierto rango, o cuando faltan datos.

    • Los inicializadores que pueden fallar al inicializar un objeto se llaman inicializadores fallables (failable initializer) y pueden regresar nil después de la inicialización.

    • Utilice init? para declarar un inicializador fallable.

  • Aspectos esenciales de Swift Clases e inicializadores

    • Los inicializadores pueden tener un número de palabras asociadas.

    • Un inicializador designado no requiere ninguna palabra. Este inicializador actúa como uno de los inicializadores primarios de una clase.

    • La palabra convenience después de un inicializador indica que es un inicializador de conveniencia, el cual es un inicializador secundario que pude agregar comportamiento adicional o personalización, pero enventualmente debe invocar a un inicializador designado.

    • La palabra required después de un inicializador indica que cualquier subclase debe implementar su propia versión del inicializador.

  • Aspectos esenciales de Swift Clases e inicializadores

    • La conversión de tipos (type cast) es una manera de verificar el tipo de una instancia y tratarla se manera distinta dependiendo de su lugar en la jerarquía de clases.

    • Una constante o variable de una cierta clase puede referirse a una instancia de una subclase. cuando se crea que este es el caso, se puede tratar de convertir a la subclase (downcast) a través del operador de conversión de tipos.

    • Dado que la conversión puede fallar, el operador de conversión de tipos viene en 2 formas. La forma opcional as? y la forma forzada as!.

    • Utilice el operador de conversión de tipos opcional (as?) cuando no esté seguro si la conversión será exitosa.

    • Utilice el operador de conversión de tipos forzada (as!) cuando esté seguro que la conversión será exitosa.

  • Aspectos esenciales de Swift Clases e inicializadores

    • El ejemplo muestra el uso del operador de conversión de tipos opcional (as?) para verificar si una figura (Shape) en un arreglo de figuras es un cuadrado (Square) o triángulo (Triangle).

    • Se incrementa la cuenta de objetos de tipo Square y Triangle cada vez que se encuentra la figura correspondiente. Al final se imprimen las cuentas.

  • Aspectos esenciales de Swift Enumeraciones y estructuras

    • Las clases no son la única manera de definir tipos de datos en Swift.

    • Las enumeraciones y las estructuras tienen capacidades similares que las clases, pero pueden ser útiles en diferentes contextos.

    • Las enumeraciones definen un tipo común para un grupo de valores relacionados y permiten trabajar con esos valores de manera segura.

    • Las enumeraciones pueden tener métodos asociados.

    • Utilice la palabra enum para crear una enumeración.

  • Aspectos esenciales de Swift Enumeraciones y estructuras

    • En el ejemplo anterior, el tipo del valor crudo (raw-value) de la enumeración es Int, de tal forma que se debe especificar sólo el primer valor crudo, el resto se asignan en orden.

    • Para acceder al valor crudo de un miembro de la enumeración se puede utilizar la propiedad rawValue.

    • Utilice el inicializador init?(rawValue:) para crear una instancia de una enumeración a partir de un valor crudo.

  • Aspectos esenciales de Swift Enumeraciones y estructuras

    • Los valores de los miembros de una enumeración son valores por si mismos, no solamente otra manera de escribir sus valores crudos.

    • De hecho, en casos donde no existe un valor crudo significativo, no es necesario proveer uno.

  • Aspectos esenciales de Swift Enumeraciones y estructuras

    • Las estructuras permiten muchos de los mismos comportamientos de una clase, incluyendo métodos e inicializadores.

    • Una de las diferencias más importantes es que las estructuras siempre se copian cuando se pasan entre el código y las clases son pasadas por referencia.

    • Las estructuras son ideales para definir tipos de datos ligeros que no necesitan capacidades como herencia y conversión de tipos.

    • Utilice la palabra struct para crear una estructura.

  • Aspectos esenciales de Swift Protocolos

    • Un protocolo define una plantilla de métodos, propiedades y otros requisitos que se ajustan a una tarea en particular o pedazo de funcionalidad.

    • El protocolo no provee una implementación de ninguno de los métodos, sólo describe como lucirá la implementación.

    • El protocolo puede ser adoptado por una clase, estructura o enumeración para proveer una implementación de esos requisitos.

    • Cualquier tipo que satisfaga los requisitos de un protocolo se dice que conforma al protocolo.

    • Utilice la palabra protocol para declara un protocolo.

  • Aspectos esenciales de Swift Protocolos

    • Los protocolos pueden requerir que los tipos que los adoptan tengan propiedades de instancia, métodos de instancia, métodos de tipo, operadores y subscripts específicos.

    • Las clases, estructuras y enumeraciones adoptan un protocolo listando su nombre después del nombre de la clase (estructura o enumeración), separada por dos puntos.

    • Un tipo puede adoptar cualquier cantidad de protocolos, los cuales aparecen en una lista separados por comas.

    • Si una clase tiene superclase, el nombre de esta debe aparecer primero en la lista, seguido de los protocolos.

  • Aspectos esenciales de Swift Protocolos

    • Los protocolos son tipos de primera clase, lo que significa que pueden ser tratados como otros tipos con nombre.

    • Por ejemplo, se puede crear un arreglo de ExampleProtocol e invocar al método adjust() sobre cada instancia en el arreglo.

  • Aspectos esenciales de Swift Swift y Cocoa Touch

    • Swift es diseñado para proveer operación transparente con Cocoa Touch, el conjunto de frameworks de Apple que se utilizan para desarrollar aplicaciones para iOS.

    • Hasta ahora, se ha trabajado sólo con tipos de datos de la biblioteca estándar de Swift.

    • La biblioteca estándar de Swift es un conjunto de tipos de datos diseñadas para Swift e incluidas en el lenguaje.

    • Los tipos como String y Array son ejemplos de tipos incluidos en la biblioteca estándar.

  • • Cuando se escriben aplicaciones iOS, se utilizan más que la biblioteca estándar de Swift.

    • Uno de los frameworks más utilizados en el desarrollo iOS es UIKit.

    • UIKit contiene clases útiles para trabajar con la capa de interfaz de usuario de la aplicación.

    • Para acceder a UIKit, simplemente se debe importar como un módulo en cualquier archivo Swift.

    • Después de importar UIKit, se puede utilizar la sintaxis de Swift con los tipos de UIKit.

    Aspectos esenciales de Swift Swift y Cocoa Touch