Todo se puede aprender
...si se quiere.
Home » , » Empezando con Swift - Creado por Stack OverFlow

Empezando con Swift - Creado por Stack OverFlow

28 de febrero de 2021 | 13:58


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)

Empezando con Swift - Creado por Stack OverFlow