Este tutorial ha sido preparado para que los principiantes los ayuden a comprender Swift Programación. Después de completar este tutorial, se encontrará con un nivel moderado de experiencia en Swift desde donde puede pasar a los siguientes niveles.
¿Qué es el lenguaje de programación Swift?
Swift es un lenguaje de programación multiparadigma creado por Apple enfocado en el desarrollo de aplicaciones para iOS y macOS. Fue presentado en la WWDC 2014 y está diseñado para integrarse con los Frameworks Cocoa y Cocoa Touch; puede usar cualquier biblioteca programada en Objective-C y llamar a funciones de C. También es posible desarrollar código en Swift compatible con Objective-C bajo ciertas condiciones. Swift tiene la intención de ser un lenguaje seguro, de desarrollo rápido y conciso. Usa el compilador LLVM incluido en Xcode 6. Fue presentado como un lenguaje propietario, pero en el año 2015, con la versión 2.2, pasó a ser de código abierto8 con la Licencia Apache 2.0.
Chris Lattner comenzó su desarrollo en el 2010, eventualmente obtuvo colaboración de otros programadores. Swift se benefició de la experiencia de muchos lenguajes tomando ideas de Objective-C, Haskell, Rust, Ruby, Python, C#, CLU entre otros.
Tabla de contenido
Acerca de 1
Capítulo 1: Empezando con Swift Language 2
Observaciones 2
Otros recursos 2
Versiones 2
Examples 3
Tu primer programa Swift 3
Instalación de Swift 4
Tu primer programa en Swift en una Mac (usando un área de juegos) 5
Tu primer programa en la aplicación Swift Playgrounds para iPad 9
Valor opcional y enumeración opcional 12
Capítulo 2: (Inseguro) punteros de búfer 14
Introducción 14
Observaciones 14
Examples 14
UnsafeMutablePointer 15
Práctico caso de uso para punteros de búfer 16
Capítulo 3: Actuación 17
Examples 17
Asignación de rendimiento 17
Advertencia sobre estructuras con cadenas y propiedades que son clases 17
Capítulo 4: Algoritmos con Swift 19
Introducción 19
Examples 19
Tipo de inserción 19
Clasificación 20
Selección de selección 23
Análisis asintótico 23
Ordenación rápida: tiempo de complejidad O (n log n) 24
Gráfico, trie, pila 25
Grafico 25
Trie 33
Apilar 36
Capítulo 5: Almacenamiento en caché en el espacio en disco 39
Introducción 39
Examples 39
Ahorro 39
Leyendo 39
Capítulo 6: Arrays 40
Introducción 40
Sintaxis 40
Observaciones 40
Examples 40
Semántica de valor 40
Conceptos básicos de matrices 40
Arreglos vacíos 41
Literales array 41
Arreglos con valores repetidos. 41
Creando arrays desde otras secuencias. 41
Matrices multidimensionales 42
Acceso a valores de matriz 42
Metodos utiles 43
Modificar valores en una matriz 43
Ordenar una matriz 44
Creando una nueva matriz ordenada 44
Ordenar una matriz existente en su lugar 44
Ordenar una matriz con un orden personalizado 44
Transformando los elementos de un Array con mapa (_ :) 45
Extraer valores de un tipo dado de un Array con flatMap (_ :) 46
Filtrando una matriz 46
Filtrado nil de una transformación de Array con flatMap (_ :) 47
Suscribiendo una matriz con un rango 47
Agrupar valores de matriz 48
Aplanar el resultado de una transformación de Array con flatMap (_ :) 48
Combinando los caracteres en una serie de cadenas. 49
Aplanando una matriz multidimensional 49
Ordenar una matriz de cuerdas 50
Lácilmente aplanando una matriz multidimensional con aplanar () 51
Combinando los elementos de un Array con reduce (_: combine :) 51
Eliminar elemento de una matriz sin saber su índice 52
Swift3 52
Encontrar el elemento mínimo o máximo de un Array 52
Encontrar el elemento mínimo o máximo con un pedido personalizado. 53
Acceder a los índices de forma segura. 53
Comparando 2 matrices con zip 54
Capítulo 7: Bloques 55
Introducción 55
Examples 55
Cierre sin escape 55
Cierre de escape 55
Capítulo 8: Booleanos 57
Examples 57
¿Qué es Bool? 57
Niega un Bool con el prefijo! operador 57
Operadores lógicos booleanos 57
Booleanos y condicionales en línea 58
Capítulo 9: Bucles 60
Sintaxis 60
Examples 60
Bucle de entrada 60
Iterando sobre un rango 60
Iterando sobre una matriz o conjunto 60
Iterando sobre un diccionario 61Iterando a la inversa 61
Iterando sobre rangos con zancada personalizada 62
Bucle de repetición 63
mientras bucle 63
Tipo de secuencia para cada bloque 63
Bucle de entrada con filtrado. 64
Rompiendo un bucle 65
Capítulo 10: Cambiar 66
Parámetros 66
Observaciones 66
Examples 66
Uso básico 66
Coincidencia de valores múltiples 67
Haciendo juego un rango 67
Usando la instrucción where en un switch 67
Satisfacer una de las múltiples restricciones usando el interruptor 68
Emparejamiento parcial 68
Cambiar fracasos 69
Interruptor y Enums 70
Interruptor y Opcionales 70
Interruptores y tuplas 70
Coincidencia basada en clase - ideal para prepareForSegue 71
Capítulo 11: Cierres 73
Sintaxis 73
Observaciones 73
Examples 73
Fundamentos de cierre 73
Variaciones de sintaxis 74
Pasando cierres a funciones 75
Sintaxis de cierre de seguimiento 75
Parámetros de @noescape 75
Nota de Swift 3: 76throws y rethrows 76
Capturas, referencias fuertes / débiles y ciclos de retención. 77
Retener ciclos 78
Utilización de cierres para codificación asíncrona. 78
Cierres y alias de tipo 79
Capítulo 12: Cifrado AES 81
Examples 81
Cifrado AES en modo CBC con un IV aleatorio (Swift 3.0) 81
Cifrado AES en modo CBC con un IV aleatorio (Swift 2.3) 84
Cifrado AES en modo ECB con relleno PKCS7 85
Capítulo 13: Comenzando con la Programación Orientada al Protocolo 87
Observaciones 87
Examples 87
Aprovechamiento de la programación orientada al protocolo para pruebas unitarias 87
Usando protocolos como tipos de primera clase. 88
Capítulo 14: Concurrencia 93
Sintaxis 93
Examples 93
Obtención de una cola de Grand Central Dispatch (GCD) 93
Ejecución de tareas en una cola de Grand Central Dispatch (GCD) 95
Loops concurrentes 96
Ejecutar tareas en un OperationQueue 97
Creación de operaciones de alto nivel 99
Capítulo 15: Condicionales 102
Introducción 102
Observaciones 102
Examples 102
Usando guardia 102
Condicionales básicos: declaraciones if 103
El operador lógico AND 103
El operador lógico O 104
El operador lógico NO 104
Encuadernación opcional y cláusulas "donde". 104
Operador ternario 105
Operador sin coalescencia 106
Capítulo 16: Conjuntos 107
Examples 107
Declarar Conjuntos 107
Modificar valores en un conjunto. 107
Comprobando si un conjunto contiene un valor 107
Realización de operaciones en sets. 107
Agregando valores de mi propio tipo a un conjunto 108
CountedSet 108
Capítulo 17: Control de acceso 110
Sintaxis 110
Observaciones 110
Examples 110
Ejemplo básico usando un Struct 110
Car.make (público) 111
Car.model (interno) 111
Car.otherName (fileprivate) 111
Car.fullName (privado) 111
Ejemplo de subclasificación 111
Getters and Setters Ejemplo 112
Capítulo 18: Controlador de finalización 113
Introducción 113
Examples 113
Controlador de finalización sin argumento de entrada 113
Controlador de finalización con argumento de entrada 113
Capítulo 19: Convenciones de estilo 115
Observaciones 115
Examples 115
Claro uso 115
Evitar la ambigüedad 115
Evitar la redundancia 115
Nombrando variables de acuerdo a su rol. 115
Alto acoplamiento entre nombre de protocolo y nombres de variable 116
Proporcionar detalles adicionales cuando se utilizan parámetros de tipo débil 116
Uso fluido 116
Usando lenguaje natural 116
Métodos de fábrica de nombres 116
Nombrando Parámetros en Inicializadores y Métodos de Fábrica 116
Nombrar de acuerdo a los efectos secundarios 117
Funciones o variables booleanas 117
Protocolos de denominación 117
Tipos y propiedades 117
Capitalización 118
Tipos y Protocolos 118
Todo lo demas... 118
El caso de Carmel: 118
Abreviaturas 118
Capítulo 20: Cuerdas y personajes 120
Sintaxis 120
Observaciones 120
Examples 120
Literales de cuerdas y personajes 120
Interpolación de cuerdas 120
Caracteres especiales 121
Cuerdas de concatenación 121
Examina y compara cuerdas 122
Codificación y descomposición de cadenas 123
Cuerdas en descomposición 123
Longitud de la cuerda y la iteración 123
Unicode 123
Estableciendo valores 123
Conversiones 124
Cuerdas de inversión 124
Cadenas mayúsculas y minúsculas 125
Compruebe si la cadena contiene caracteres de un conjunto definido 125
Contar las ocurrencias de un personaje en una cadena 126
Eliminar caracteres de una cadena no definida en Set 127
Formato de cadenas 127
Ceros a la izquierda 127
Números después de decimal 127
Decimal a hexadecimal 127
Decimal a un número con radix arbitrario 127
Convertir una cadena Swift a un tipo de número 128
Iteración de cuerdas 128
Eliminar WhiteSpace y NewLine iniciales y finales 130
Convertir cadena a / desde datos / NSData 130
Dividir una cadena en una matriz 131
Capítulo 21: Derivación de clave PBKDF2 133
Examples 133
Clave basada en contraseña Derivación 2 (Swift 3) 133
Clave basada en contraseña Derivación 2 (Swift 2.3) 134
Calibración de derivación de clave basada en contraseña (Swift 2.3) 135
Calibración de derivación de clave basada en contraseña (Swift 3) 135
Capítulo 22: Entrar en Swift 137
Observaciones 137
Examples 137
Imprimir Debug 137
Actualización de una clase de depuración e impresión de valores. 137
tugurio 138
imprimir () vs dump () 139
imprimir vs NSLog 139
Capítulo 23: Enums 141
Observaciones 141
Examples 141
Enumeraciones basicas 141
Enums con valores asociados. 142
Cabida indirecta 143
Valores crudos y hash 143
Inicializadores 144
Las enumeraciones comparten muchas características con clases y estructuras 145
Enumeraciones anidadas 146
Capítulo 24: Estructuras 147
Examples 147
Fundamentos de Estructuras 147
Las estructuras son tipos de valor 147
Mutando un Struct 147
Cuando puedes usar métodos de mutación 148
Cuando NO puedes usar métodos de mutación 148
Las estructuras no pueden heredar 148
Accediendo miembros de struct 148
Capítulo 25: Extensiones 150
Observaciones 150
Examples 150
Variables y funciones 150
Inicializadores en extensiones 150
¿Qué son las extensiones? 151
Extensiones de protocolo 151
Restricciones 151
Qué son las extensiones y cuándo usarlas. 152
Subíndices 152
Capítulo 26: Funcionar como ciudadanos de primera clase en Swift 154
Introducción 154
Examples 154Asignando función a una variable 154
Pasar la función como un argumento a otra función, creando así una función de orden superi 155
Función como tipo de retorno de otra función. 155
Capítulo 27: Funciones 156
Examples 156
Uso básico 156
Funciones con parámetros 156
Valores de retorno 157
Errores de lanzamiento 157
Métodos 158
Métodos de instancia 158
Métodos de tipo 158
Parámetros de entrada 158
Sintaxis de cierre de seguimiento 159
Los operadores son funciones 159
Parámetros variables 159
Subíndices 160
Opciones de subíndices: 161
Funciones con cierres 161
Funciones de paso y retorno. 162
Tipos de funciones 162
Capítulo 28: Funciones Swift Advance 164
Introducción 164
Examples 164
Introducción con funciones avanzadas. 164
Aplanar matriz multidimensional 165
Capítulo 29: Generar UIImage de Iniciales desde String 166
Introducción 166
Examples 166
InicialesImageFactory 166
Capítulo 30: Genéricos 167
Observaciones 167
Examples 167
Restricción de tipos genéricos de marcadores de posición 167
Los fundamentos de los genéricos 168
Funciones genéricas 168
Tipos genéricos 168
Pasando por tipos genéricos 169
Nombre genérico de marcador de posición 169
Ejemplos genéricos de clase 169
Herencia genérica de clase 170
Usando Genéricos para Simplificar las Funciones de Arreglos 171
Use genéricos para mejorar la seguridad de tipo 171
Restricciones de tipo avanzado 172
Capítulo 31: Gestión de la memoria 174
Introducción 174
Observaciones 174
Cuándo usar la palabra clave débil: 174
Cuándo usar la palabra clave sin dueño: 174
Escollos 174
Examples 174
Ciclos de referencia y referencias débiles 175
Referencias débiles 175
Gestión de memoria manual 176
Capítulo 32: Gestor de paquetes Swift 177
Examples 177
Creación y uso de un simple paquete Swift 177
Capítulo 33: Hash criptográfico 179
Examples 179
MD2, MD4, MD5, SHA1, SHA224, SHA256, SHA384, SHA512 (Swift 3) 179
HMAC con MD5, SHA1, SHA224, SHA256, SHA384, SHA512 (Swift 3) 180
Capítulo 34: Inicializadores 183
Examples 183
Establecer valores de propiedad predeterminados 183
Personalización de inicialización con paramatizadores. 183
Conveniencia inic 184
Inicializador designado 186
Inicia conveniencia () 186
Convenience init (otherString: String) 186
Inicializador designado (llamará al inicializador designado de superclase) 186
Inicia conveniencia () 187
Iniciador Throwable 187
Capítulo 35: Inyección de dependencia 188
Examples 188
Inyección de dependencia con controladores de vista 188
Introducción a la inyección dependiente 188
Ejemplo sin DI 188
Ejemplo con inyección de dependencia 189
Tipos de inyección de dependencia 191
Ejemplo de configuración sin DI 192
Inyección de dependencia del inicializador 192
Propiedades Dependencia Inyección 193
Método de inyección de dependencia 193
Capítulo 36: La declaración diferida 194
Examples 194
Cuándo usar una declaración diferida 194
Cuando NO usar una declaración diferida 194
Capítulo 37: Las clases 196
Observaciones 196
Examples 196
Definiendo una clase 196
Semántica de referencia 196
Propiedades y metodos 197
Clases y herencia múltiple 198deinit 198
Capítulo 38: Lectura y escritura JSON 199
Sintaxis 199
Examples 199
Serialización, codificación y decodificación JSON con Apple Foundation y Swift Standard Li 199
Leer json 199
Escribir json 199
Codificar y decodificar automáticamente 200
Codificar a datos JSON 201
Decodificar a partir de datos JSON 201
Codificación o decodificación exclusiva 201
Usando Nombres Clave Personalizados 201
SwiftyJSON 202
Freddy 203
Ejemplo de datos JSON 203
Deserialización de datos sin procesar 204
Deserializando modelos directamente 205
Serialización de datos en bruto 205
Serialización de modelos directamente 205
Flecha 205
JSON simple de análisis en objetos personalizados 207
JSON analizando Swift 3 208
Capítulo 39: Los diccionarios 211
Observaciones 211
Examples 211
Declarar Diccionarios 211
Modificar los diccionarios 211
Valores de acceso 212
Cambiar el valor del diccionario usando la clave 212
Obtener todas las claves en el diccionario 213
Fusionar dos diccionarios 213
Capítulo 40: Manejo de errores 214
Observaciones 214
Examples 214
Fundamentos de manejo de errores 214
Capturando diferentes tipos de error 215
Patrón de captura y cambio para el manejo explícito de errores 216
Deshabilitando la propagación de errores 217
Crear error personalizado con descripción localizada 217
Capítulo 41: Marca de documentación 219
Examples 219
Documentación de la clase 219
Estilos de documentación 219
Capítulo 42: Método Swizzling 224
Observaciones 224
Campo de golf 224
Examples 224
Ampliando UIViewController y Swizzling viewDidLoad 224
Fundamentos de Swift Swiftling 225
Fundamentos de Swizzling - Objective-C 226
Capítulo 43: NSRegularExpression en Swift 227
Observaciones 227
Examples 227
Extendiendo String para hacer patrones simples 227
Uso básico 228
Sustitución de subcadenas 228
Caracteres especiales 229
Validación 229
NSRegularExpression para validación de correo 230
Capítulo 44: Números 231
Examples 231
Tipos de números y literales. 231
Literales 231
Sintaxis literal entera 231
Sintaxis literal de punto flotante 231
Convertir un tipo numérico a otro 232
Convertir números a / desde cadenas 232
Redondeo 233
redondo 233
hacer techo 233
piso 233
En t 234
Notas 234
Generación de números aleatorios 234
Notas 234
Exposiciónción 235
Capítulo 45: Objetos asociados 236
Examples 236
Propiedad, en una extensión de protocolo, lograda utilizando objeto asociado. 236
Capítulo 46: Opcionales 239
Introducción 239
Sintaxis 239
Observaciones 239
Examples 239
Tipos de opcionales 239
Desenvolviendo un opcional 240
Operador Coalescente Nil 241
Encadenamiento opcional 241
Descripción general - ¿Por qué Optionals? 242
Capítulo 47: Operadores Avanzados 244
Examples 244
Operadores personalizados 244
Sobrecarga + para Diccionarios 245
Operadores conmutativos 245
Operadores de Bitwise 246Operadores de desbordamiento 247
Precedencia de los operadores Swift estándar. 247
Capítulo 48: OptionSet 249
Examples 249
Protocolo OptionSet 249
Capítulo 49: Patrones de diseño - Creacionales 250
Introducción 250
Examples 250
Semifallo 250
Método de fábrica 250
Observador 251
Cadena de responsabilidad 252
Iterador 253
Patrón de constructor 254
Ejemplo: 255
Llevarlo mas alla: 257
Capítulo 50: Patrones de diseño - Estructurales 261
Introducción 261
Examples 261
Adaptador 261
Fachada 261
Capítulo 51: Programación Funcional en Swift 263
Examples 263
Extraer una lista de nombres de una lista de personas 263
Atravesando 263
Saliente 263
Filtración 264
Usando Filtro con Estructuras 265
Capítulo 52: Protocolos 267
Introducción 267
Observaciones 267
Examples 267
Conceptos básicos del protocolo 267
Acerca de los protocolos 267
Requisitos de tipo asociado 269
Patrón de delegado 271
Ampliación del protocolo para una clase específica conforme 272
Usando el protocolo RawRepresentable (Extensible Enum) 273
Protocolos de clase solamente 273
Semántica de referencia de protocolos de clase solamente. 274
Variables débiles del tipo de protocolo. 275
Implementando el protocolo Hashable 275
Capítulo 53: Reflexión 277
Sintaxis 277
Observaciones 277
Examples 277
Uso básico para espejo 277
Obtención de tipos y nombres de propiedades para una clase sin tener que instanciarla 278
Capítulo 54: RxSwift 281
Examples 281
Conceptos básicos de RxSwift 281
Creando observables 281
Desechando 282
Fijaciones 283
RxCocoa y ControlEvents 283
Capítulo 55: Servidor HTTP Swift de Kitura 286
Introducción 286
Examples 286
Hola aplicación mundial 286
Capítulo 56: Tipo de fundición 290
Sintaxis 290
Examples 290
Downcasting 290
Casting con interruptor 290
Upcasting 291
Ejemplo de uso de un downcast en un parámetro de función que involucra subclases 291
Tipo casting en Swift Language 291
Tipo de fundición 291
Downcasting 292
Conversión de cadena a Int & Float: - 292
Conversión de flotar a cadena 292
Entero a valor de cadena 292
Flotante a valor de cadena 293
Valor flotante opcional a la cadena 293
Cadena opcional a valor de Int 293
Disminuyendo los valores de JSON 293
Disminución de valores desde JSON opcional 293
Gestionar JSON Response con condiciones. 293
Gestionar respuesta nula con condición 294
Salida: Empty Dictionary 294
Capítulo 57: Tipografías 295
Examples 295
Tipografías para cierres con parámetros. 295
Tipografías para cierres vacíos. 295
tipografías para otros tipos 295
Capítulo 58: Trabajando con C y Objective-C 296
Observaciones 296
Examples 296
Usando clases Swift desde el código Objective-C 296
En el mismo modulo 296
En otro modulo 297
Usando las clases de Objective-C del código Swift 297
Puente de encabezados 297
Interfaz generada 298
Especifique un encabezado de puente para swiftc 299
Usa un mapa de módulo para importar encabezados C 299
Interoperación de grano fino entre Objective-C y Swift 300
Usa la biblioteca estándar de C 301
Capítulo 59: Tuplas 302
Introducción 302
Observaciones 302
Examples 302
¿Qué son las tuplas? 302
La descomposición en variables individuales. 303
Tuplas como el valor de retorno de las funciones 303
Usando una tipografía para nombrar tu tipo de tupla 303
Intercambiando valores 304
Ejemplo con 2 variables 304
Ejemplo con 4 variables 304
Tuplas como caso en el interruptor 304
Capítulo 60: Variables y propiedades 306
Observaciones 306
Examples 306
Creando una Variable 306
Conceptos básicos de propiedad 306
Propiedades almacenadas perezosas 307
Propiedades calculadas 307
Variables locales y globales 308
Tipo de propiedades 308
Observadores de la propiedad 309
Hosting: Drive (Descarga Directa Para Desktop y Mobile)
Archivo: Pdf
Idioma: Español
Peso: (3 Mb)