Skip to content

Latest commit

 

History

History
266 lines (260 loc) · 8.91 KB

Episodios.md

File metadata and controls

266 lines (260 loc) · 8.91 KB

⚠️ (Este es un doc. que uso para tener un guión / idea de qué hablar en cada episodio y no irme por las ramas. Puede cambiar y cambiará sobre la marcha y sin previo aviso)

Ideas para los episodios

  • Ep 000
    • presentación del canal
    • Qué vamos a ver y qué no
      • SwiftUI vs UIKit
      • Objective C vs Swift
    • Este repo como punto de encuentro
      • issues
      • Code of Conduct
    • instalación de herramientas: Xcode
    • cuenta developer en Apple, merece la pena?
      • tipos de cuentas de desarrollador
    • Las mejores prácticas
    • Playgrounds Swift y el mínimo Swift imprescindible
      • Código en Inglés
      • let / var
  • Ep 001
    • presentación del canal / Diego (que se me olvidó)
    • Cosas que recomiendo: https://twitter.com/XcodeReleases
    • Playgrounds Swift y el mínimo Swift imprescindible
      • class / struct
        • structs: value types
        • fluent API para "cambiar" un Struct
      • array
      • if
      • funciones
        • argumentos de funciones
        • omitir return
      • clausuras
        • argumentos en clausuras
        • $0, etc.
        • trailing closures
    • Hello World iOS!
      • crear el proyecto
      • ficheros, File Navigator ⌘+1
      • código
        • @main
        • App protocol
      • Simulador iOS: seleccionar el Sim
      • ejecución y parada del proyecto
    • Text
  • Ep 002
    • ℹ️ canal
    • Text
      • Modifiers
        • foregroundColor
        • background
        • padding
        • font
        • fontWeight
        • shadow
        • cornerRadius
    • Color
    • Attributes Inspector ⌥ + ⌘ + 4
    • Label
    • Spacer
    • Más de una View a la vez, ViewBuilders
    • VStack
    • ScrollView
    • Image (local)
    • 💻 Pantalla de Acerca de
  • Ep 003
    • ℹ️ canal
    • Button
    • TextField
    • conditional rendering (if)
    • @State variables
    • SwiftUI Previews
      • ⚠️ no ejecutar en Macs con procesador Core i🔥 else 🚁
      • cambiar propiedades de las previews
      • múltiples dispositivos
      • // MARK: - SwiftUI Previews comments
    • 💻 Adivina el número que estoy pensando
  • Ep 004
    • ℹ️ canal
    • Añadir SwiftUI Views usando Library
    • AsyncImage https://pokeapi.co/
    • .border(Color.red, width: 5)
    • Crear vistas personalizadas
    • 💻 Cargar imágenes a izquierda y derecha pulsando un botón
      • usando un array de URLs (strings)
      • .frame(width: 320, height: 200, alignment: .center)
      • cambiar background color de la vista
    • Assets Catalogs: uso para colores
    • HStack
    • Separator
  • Ep 005
    • Clausuras en Swift: toma segunda
      • argumentos en clausuras
      • $0, etc.
      • trailing closures
    • 💻 Mejorar Pokepedia Screen
      • full screen
      • Mejorar botón
      • Imagen con tamaño adecuado
      • añadir placeholder
      • extraer modelo
  • Ep 006
    • Separar vista que itera por los Pokemons de la que muestra un Pokemon
    • Separar datos de Pokemons en un método mocked
    • HStack horizontal + ScrollView
    • TabView
    • List
      • forEach
      • usando un array de Pokemons
  • Ep 007
    • Separar vista detalle Pokemons
    • Añadir PokemonDetailView vacía
    • Añadir NavigationView
    • Añadir navigationTitlea List
    • Añadir NavigationLink
  • Ep 008
    • JSON Decoding
      • copiar JSON en Swift
      • Decodable protocol
      • keys
      • debug problemas con JSON Decoding
    • cambiar signatura función para usar clausuras
  • Ep 009
    • finalizar propiedad URL mostrando la Imagen del Pokemon
    • Networking
      • depurar JSON
        • Paw, generar código con Paw
        • cURL + pbcopy + editor
        • cURL + pretty print
      • función para bajar los datos JSON de un Pokemon
      • bucle para bajar unos cuantos
      • multihilo y depuración
      • @escaping
  • Ep 010
    • acabar colores con un enum
    • volver al hilo principal
    • cargar lista pokemons al principio
  • Ep 011
    • separar vista carga
    • Unit Testing I
      • crear target de testing
      • escribir test para parse
      • Unit Testing con XCFramework
  • Ep 012
    • añadir nuevos tests (JSON parsing)
    • mover fichero JSON a target pruebas
    • varios targets de tests
    • tests lentos
    • Schemas y targets: relación
  • Ep 013
    • mapas
      • añadir vista mapa
      • inyectar pokemons en mapa
      • añadir anotaciones al mapa
      • mostrar/ocultar una vista sobre el mapa
      • efectos: blur y animación
  • Ep 014
    • Test doubles: mocks, stubs
    • Testing API
  • Ep 015
    • Final touches to the App
  • Ep 016
    • Sample Animations App: create the App (iOS, Mac Catalyst)
    • Add a simple TabView
    • Create RotatingBackgroundView
    • BouncingImage with repeatForever animation
  • Ep 017
    • SpriteKit particle generator
  • Ep 018
    • Cómo definir la mínima versión soportada por nuestra App, cambiando el iOS Deployment Target.
    • Animación 3D
    • Efectos de partículas con SpriteKit
  • Ep 019
  • Ep 020
  • Ep 021

  • añadir #if debug

  • usar nuestra nueva Page en API

  • Backlog

    • navigationBarItems

    • 🛠 Xcode: Settings, Project, targets, Unit tests Target

    • NavigationLink navegando programaticamente

    • VStack alignment y spacing

    • .buttonStyle(.borderedProminent)

    • 💻 programa que imprima tu nombre en un Label

    • Bindings, $ wrapper

      • La diferencia es que el tipo que espera el TexField es Binding, para poder cambiarlo desde dentro del TextField. Si no pones el $ el error que tienes es: Cannot convert value 'number' of type 'String' to expected type 'Binding', use wrapper instead

      Es decir, el $ es una manera “rápida”de crear un Binding Si no usas el $, tienes que escribir esto:

      TextField("Your guess", text:  Binding<String>(get: {
              return self.number
          },
              set: { newValue in
              self.number = newValue
          }))
    • some keyword

    • Networking 2

      • acceder a la red para bajar una imagen
    • crear un hosting estático en MongoDB Realm

  • Controles

  • Xcode

    • Navigators
    • Panels
    • Settings
    • Debug area
    • etc.
  • Ep Debugging avanzado

    • Crear puntos de ruptura
    • Activar, continuar, parar
    • Puntos de ruptura que no paran
    • Añadir acciones a los puntos de ruptura
  • Ep code signing

    • bitcode
  • Ep maps

    • GPS
    • Pedir permisos
  • Ep SwiftUI Canvas

  • Sensores

    • Cámara y permisos
    • Acelerómetro
    • 💻 App estaciones del año
  • Ep XX

    • Testing
  • Ep XX

    • Simulador, dónde se almacenan nuestros programas
    • Inspeccionando nuestro programa
      • binario
      • bundle
      • recursos
  • UIKit

    • UIKit Dynamics
  • Ep XX

    • DocC
  • Ep XX

    • Compilando desde la línea de comandos: xcodebuild y swift
    • Github Actions
      • crear nuestra GH Action que compile un proyecto
      • ejecutar test de unidad en una GH Action
  • Ep XX

    • Incorporando librerías de terceros: SPM
  • Ep XX

    • Creando nuestros propios paquetes con SPM!
    • Local Packages