ii. aspectos esenciales de swiftfcqi.tij.uabc.mx/usuarios/glicea/documents/swift.pdfaspectos...
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