La mejor WWDC... para los desarrolladores

00:00 /25:51

Analizamos el evento de la WWDC bajo el prisma de los desarrolladores, comentando algunas de las novedades más importantes como Swift Data, las macros de Swift o el nuevo protocolo Observable que cambia por completo la arquitectura de funcionamiento en SwiftUI.

Ha sido una WWDC de perfil bajo en novedades para los usuarios, ya que el margen de mejora de los sistemas operativos es menor, pero muy alto para los desarrolladores que han visto cumplidos algunos de sus sueños más recurrentes este año.

Además de todas las novedades de desarrollo para la nueva plataforma visionOS que son una maravilla.

Episodio con la colaboración de BP. Infórmate en bp.es. Promoción válida hasta el 30 de junio.

Convierte en un Senior iOS Developer con el Swift Full Stack Bootcamp. Encuentra toda la información aquí: IV Swift Full Stack Bootcamp 2024.

Descubre nuestro canal de Twitch en: twitch.tv/applecoding.

Descubre nuestras ofertas para oyentes:

---------------

Consigue las camisetas oficiales de Apple Coding con los logos de Swift y Apple Coding así como todo tipo de merchadising como tazas o fundas.

---------------

    Tema musical: "For the Win" de "Two Steps from Hell", compuesto por Thomas Bergensen. Usado con permisos de fair use. Escúchalo en Apple Music o Spotify.

    Transcripción


    Wanda, la comunidad de podcast independientes en español,

    nuevo episodio, de Apple Codingdale Ya ha terminado la WWC y Por desgracia, no tengo tiempo para poder hacer el Meganálisis Por lo que este Meganálisis tendrá que esperar o más bien habrá distintos pequeños resúmenes en distintos episodios como este de Apple Coding Daily o como otros que habrá más adelante en Applecoding, en formato quincenal, en lo que es los podcasts más largos. Principalmente porque ahora mismo pues como digo no tengo tiempo para poder hacerlo estoy a tope de trabajo y a duras penas puedo ver algunos vídeos leer alguna documentación, etcétera. Pero lo que sí tengo muy claro y esto es algo que me ha sorprendido este año, es que Bueno, si tú preguntas a cualquiera sobre las impresiones de la WWC, te dirá pues qué bueno que vale más o menos pues alguna cosita aquí en iOS diecisiete que si los widgets que se pulsan, que si algún cambio por aquí bonito, que si no sé cuántas, que si tal, pero todo Cambios de muy bajo perfil. Los cambios como una actualización al final la gente se le ha pasado el hype muy pronto y obviamente toda la opinión ha quedado completamente eclipsada con la Sapel Vision Pro.

    Pero independientemente las novedades de iOS diecisiete, el resto de sistemas, han quedado bastante ocultas porque en realidad es una actualización de bajo perfil por lo que podríamos pensar que en realidad esta WWC aparte de la Samper Vision Pro pues ha sido de muy bajo perfil. Bien, pues lamento comunicarles que esto no es así. Desde el punto de vista de los desarrolladores Esta WWC es una de las Navidades más emocionantes e increíbles que ha dado Apple en mucho tiempo. Vamos a ver por qué. Pero antes de desgranar la WWC no podemos olvidar a nuestro colaborador habitual que en este caso vuelve a ser bebé porque vuelven las temperaturas agradables para salir los fines de semana con el coche y por lo tanto aumentan las paradas para repostar.

    Y te aconsejo que siempre planifiques esto por qué hacerlo en las estaciones de servicio BP para repostar por supuesto con bp ultimate con tecnología active te va a traer algo muy bueno pues para tu bolsillo ya que te puedes ahorrar hasta ocho céntimos por litro usando tu tarjeta Mi BP. Si estás en península o Baleares, o Plan Dino BP, si estás en Canarias. Siempre que parecen estaciones BP tendrás tres céntimos de ahorro por litro en tu tarjeta y además podrás obtener hasta cinco más de ahorro cuando repuesto es BP Ultimate con tecnología active. Por lo tanto, no sólo es bueno para tu bolsillo. Es que también es bueno para la salud de tu motor.

    Descubre toda la información en mi pp punto es o en plandino pp punto es y ahí tendrás todas las condiciones y no olvides que esta promoción termina el treinta de junio. Muchas gracias a BP por colaborar con Apple, Coding Day, Si le preguntas a cualquier desarrollador del mundo mundial en entornos Apple y le dices cierra los ojos y piensa un deseo. ¿Qué te gustaría que cambiara? El noventa y nueve coma nueve por ciento te diría: Core data. Porque es un infierno y porque está pecando.

    A ver, yo he llegado a cogerle cariño a corre data, las cosas como son, pero hay que reconocer que es excesivamente arcaico, es excesivamente un poco usables, es decir, poco intuitivo, es muy no soy capaz de definirlo realmente. Vale, entonces Resulta que este año, Apple nos ha regalado por fin aquello de lo que hemos hablado muchísimo tiempo, que iba a llegar y además ha llegado con el mismo nombre que habíamos vaticinado, con swift data. ¿Qué es Suiz-DATA? Pues Suiz-DATA es la forma de poder crear de una manera cercana a Suiz, las bases de datos, lo que es la persistencia de nuestros datos, pero está hecho de una manera también hecha que permite cosas bastante impresionantes. Básicamente, porque reduce la fricción de trabajar con un modelo de datos persistido prácticamente a casi nada.

    También depende un poco de para que vayamos a usarlo. Es cierto que si trabajamos con Suip UI las cosas se facilitan bastante y las configuraciones son muy sencillas. Pero bueno pues al final si lo sacamos fuera intentamos hacer procesos fuera de sweet UI como por ejemplo una precarga de datos o una carga de una API a datos del modelo, etcétera. Ahí ya la cosa se vuelve un poquito más corre data, ¿vale? Con una con una nomenclatura un poquito más swift con unos predicados que se hacen ahora a través de macros y por lo tanto ponemos Haspredicate y ponemos un un closer de tipo filter en vez de tener que definir un NSpredicate como hacíamos en su momento, y luego lo realmente sencillo es que yo creo una final class normal y corriente con todas las propiedades que yo necesito, y con su inicializador y basta ponerle arriba model para que se convierta en un modelo persistido con swift data Ya está, no hay que hacer más.

    A partir de ahí, lo único que necesito es trabajar directamente. Si estoy trabajando con Suip Yoi un query al que podemos darle un keypad para ordenación, me va a permitir elegir lo que sería el campo por el que quiero ordenar y luego obtener la consulta en si consulta que obviamente podemos filtrar cambiando los predicados y que también podemos utilizar pues para obtener datos que además son reactivos y la propia interfaz reacciona sin ningún problema. Lo único que tenemos que hacer de diferente es que cuando vayamos a poner un nuevo elemento dentro de lo que es ese modelo, tenemos que recuperar el contexto del contenedor y hacer una inserción en el mismo. El model container y hacer una inserción de ese elemento dentro de este model container que debe tener todas las final class de tipo model que quiero que formen parte de mi contenedor la verdad que es súper sencillo, súper simple, muy intuitivo las propias tablas incluyen elementos como atributos para que puedan ser valores únicos atributos para las relaciones de uno a n, de n a n, etcétera, y por supuesto, y una cosa que es maravillosa, es que Podemos directamente cualquier columna, cifrarla.

    Sí, señores. Por fin podemos definir un atributo para que se pueda cifrar una columna y no se grabe con los datos al aire directamente, es decir, los datos tal cual se graben en esa columna y que el cifrado sea totalmente transparente para nosotros, que yo grabe el valor, en la aplicación lo voy a tener en abierto pero cuando vaya a la base de datos va a estar completamente cifrado y lo único que tengo que hacer es poner un atributo de encripte y listo y ya está Por lo tanto, la verdad que es un cambio muy, muy, muy interesante. El otro gran cambio es la llegada de el modelo de observación. Porque sí, señores, combine pasa a mejor vida. Apple se deshace de combine, Sí, sí, lo han oído bien.

    Apple se deshace de combine como herramienta, como librería, que da estructura a Swift UI y lo sustituye por la nueva, digamos el nuevo, la nueva anotación arroba observable. Arroba observable es una nueva manera de poder gestionar todo el ciclo de vida de SWI. Se lo voy a intentar explicar de una manera muy sencilla o bueno voy a intentar que sea lo más sencilla posible. Hasta ahora nosotros teníamos varias arrugas que podíamos utilizar para la arquitectura de Suip UI, si trabajamos en nativo que es como hay que hacerlo, nada de tefeás ni cosas raras de estas que se inventa el ser humano en momentos en los abusa del cristalico azul que está muy rico, ¿vale? No.

    Esas cosas no las queremos aquí en Apercobbing. En fin, pues, en ese sentido, Lo que tendríamos es que, ahora mismo, trabajando en nativos, sabemos que tenemos que hacer una Final Class conformada con Observable Object que lo que hace es propagar hacia las vistas de su UI desde dos tipos de constructores o arroba stake upject. El observador objeto tiene un ciclo de vida igual al de la vista, por lo que si la vista se refresca en un elemento externo a la propia vista y el observador objeto de los observador objeto también se reinstancia y el stake up get permanece con la instancia retenida aunque el stake up get lo mejor es usarlo como otro de los elementos que también podemos usar, que es desde el comienzo de la aplicación, poner un step up y propagarlo a través de un empirum menu que nos crea una arroba enviomenopject, que es lo que yo propongo desde el comienzo de la aplicación, hacia lo que es el resto de la aplicación, para desde ese enviomenopject, propagar un solo cambio de un solo single ton a toda la aplicación. Perfecto. Por lo tanto, si a eso le unimos los arroba que podemos tener como valores de estado dentro de cada vista, más los combintings, que son las referencias directas de los valores de la states, como objetos por referencia para pasarlos a otras vistas hijas, pues tendríamos varias stayvainding observa object stade object y por supuesto el protocolo de observable object.

    Y no podemos olvidar que los observable objects para poder tener propiedades que se propaguen hacia la vista tenían que usar publist, un montón de arroba ¿vale? Bien. ¿Cómo ha quedado la cosa ahora mismo? La cosa ha quedado de la siguiente forma. Ahora tenemos solo tres elementos a usar.

    Se acabó. ¿Por qué? Pues porque todo va a depender de dos elementos clave. Uno de ellos es suit data el model. Los arroba models de suit data se propagan directamente por todo Suit UI y a que actualizan las vistas de manera automática.

    No tengo que hacer absolutamente nada. Cambio un valor en una. Constante que yo he recuperado de una instancia de una mobile y en cuanto cambie el valor todas las vistas se van a refrescar. Solas y no tengo que propagar nada. Es más, el model nos va a permitir hacer una cosa bastante chula que es el uso del barraindaval.

    Recuerden que cuando yo hacía un observable object que se instanciaba en un observador object o en un stade object, podía hacer un dólar de la instancia del observable objeto y eso me permitía acceder a los bindings de todos de todas las propiedades publisht? Pues ahora, el Buyingdouble va a hacer lo mismo con los Models, por lo que ustedes podrán tener un formulario de campos de texto y poner como bindings de esos campos de texto directamente. Las propiedades del modelo para que se actualice directamente desde el propio formulario. Si quieren es posible hacerlo. Solamente hay que hacer una barravaindable de lo que es cualquier instancia de tipo model las cuales podemos inyectarlas incluso dentro de un LED.

    No importa, van a seguir siendo reaccionadas en las vistas. Maravilloso. Pero no sólo eso, el observable es lo que sustituye al observable objeto, por lo que el observable objeto desaparece y a su vez desaparecen todos los publists. Si yo genero una final class, lo que sea, y le pongo encima observable, automáticamente todas las propiedades que hay en esa clase se convierten en publists sin tener que poner que son publists, sino que simplemente ya son propiedades que se propagan y actualizan cuando cambian en la vista que esté puesta o asociada. Nada más, ¿Qué hay que hacer para que este arroba observable se pueda utilizar directamente dentro de una vista?

    Pues ponerlo dentro de un stage ya está. Pones la instancia de este observable en un stage y listo. Ya está, nada más. Es con las pruebas que yo he realizado de acuerdo y luego una vez ya tienes eso pues si quieres el banking pues ya sabes lo que toca a partir a través del stay seguimos teniendo la arroba binding para poder enviarlo. Y ya está, no hay que hacer más.

    Es así de simple. La única pega entre comillas es que los arroba los arroba servables tenemos por ahora no sé si esto lo corregirá en el futuro tenemos que inicializar los en la propia declaración no me sirve poner un init de la propia clase, sino que, como se hacía con los states, hay que inicializarlos recordemos que una step no se puede dejar sin inicializar porque entonces o bien te lo pide el inicializador del strut o bien no te dé o tienes que ponerlo opcional vale porque tienes que inicializarlo en la declaración o inyectarlo pues en este en una robo observable ahora mismo ni siquiera a través de la inyección funciona. Solo funciona si lo inicializamos en la propia declaración. Pero bueno, tampoco es una cosa y no sé si es algo que Apple corregirá, pero desde luego lo que ha sucedido es que se ha reducido en muchísimos puntos la dificultad que tenía de manera intrínseca, la arquitectura nativa de Suip JOY, basada en todos esos elementos y sobre todo la gran enorme confusión de los observe upject y stade upject que uno no sabía muy bien cuándo tenía que usar unos y otros. El observador se usa cuando no vas a pasar el contexto a ningún otro sitio, te vas a quedar en la vista donde estás, ni tienes otros otros viewmodels en esa misma vista y el stade pool lo tienes que usar cuando tienes más elementos ahí vale entonces de esa manera perfecto.

    Y luego lo último es que yo simplemente genero una state en el comienzo de la aplicación, o donde me dé la gana y a través de un environment se lo paso a todas las vistas hijas que lo recuperan como una roba environment de forma que así ya no tengo que usar el envío un menú get y pues bueno, también es un poco más sencillo hacia el respecto. Solamente con estos dos cambios que ha hecho Apple, Ya tenemos un cambio absolutamente maravilloso y estupendo. Pero todo eso hay que añadir los widgets accionables que soportan tanto tolls como botones. De forma que un widget puede cambiar la información de manera directa y además ahora los widgets ya no necesitan tener un INTENT aparte en un target aparte solo para configurar ese intent para poder ser editables vale se han facilitado muchísimo y se han metido animaciones dentro de las actualizaciones de los datos tanto en las actividades en vivo como en los propios widgets Los widgets ahora tienen un protagonismo absoluto. Están dentro del Apple Watch, están en el escritorio del Mac, del Mac OS S Sonoma.

    Están en la pantalla de bloqueo del iPad por lo tanto los widgets se convierten en un elemento esencial nos va a permitir una interacción básica no es una mini aplicación pero sí poder tocar botones que hagan cosas o poder tocar toguels que también hagan cosas, marcar tareas como hechas, tocar un botón que haga una consulta de algún dato y cuando hay una actualización de ese dato en tiempo real se puede animar ese cambio de ese dato sin ningún tipo de problema También se han hecho varios cambios en scope Se han creado formas a partir de las cuales cuando yo tengo imágenes o tengo colores creados en el catálogo de assets, se generan variables estáticas en tiempo real, nos permiten acceder a las imágenes, por lo que si yo pongo una imagen en el catálogo de Asset, que se llama mi imagen, pues me genera de manera automática un punto mi imagen, por lo que yo simplemente pongo image, paréntesis punto mi imagen y ya está, y no me tengo que acordar del nombre porque ya no hay que pasar una cadena y con los colores igual también paso mi color vale como el detergente y directamente lo cogería vale por lo tanto son pequeñas grandes mejoras que han tenido.

    Las previews, por ejemplo, de Suip UI, que ahora son un poco más engorrosas pues ahora son súper simples a través de las macros y también funcionan las prevíos con joi kit podemos usar el hash preview que es en la nueva forma de crear previews directamente con UI Kit y poder poner nuestro view controller directamente en la zona de previo de Suip UI y ver cómo se instancia en, cómo se va actualizando en tiempo real según estemos trabajando. En resumen, hay mogollón de cambios en, yo qué sé, machine learning, hay en en salud, en Apple Pay, mejoras en la parte de compras integradas etcétera porque tenemos ahora una versión de swift UI nativa que mejora y hace aún más fácil todo el tema de las suscripciones, las compras integradas, etcétera. En fin, una auténtica locura, nuevos controles mucho más interesantes en Sugi UI, capacidad de hacer animaciones en los skrulls, capacidad de controlar la posición de los skrulls en tiempo real de verdad, no como hasta ahora, En fin, me emociono solo de comentarlo, ¿vale? O sea, son un montón de opciones que están dando en cientos, ¿vale? Son prácticamente más de ciento setenta vídeos los que hay de todas estas novedades sin contar aparte de esos ciento setenta vídeos los cuarenta y tantos que hay sobre visión os que si entramos a hablar de las opciones de desarrollo que tiene visión o ese y de cómo integra SWI y de cómo lo convierte de bueno bueno de flipar, o sea el trabajo que hay detrás por parte de Apple es absolutamente de quitarse el sombrero, desredes diez reverencias y decirles gracias, por favor, gracias por facilitarnos la vida a estos niveles.

    Así que en un resumen muy rápido de lo más destacado, porque si me pongo a resumirlo todo y a comentarlo todo, nos dan las subas. O los da la próxima WWF, tenemos tantos cambios, tantas novedades y tan cosas de las de por fin gracias a Apple, por fin gracias a Apple. Esas pequeñas cositas desde la más mínima, la más importante que cambian completamente la experiencia de desarrollo y sobre todo la hacen aún más sencilla. Todo lo que los usuarios no han recibido este año con un actualización de perfil muy bajo lo han recibido los desarrolladores poniendo al día todas sus herramientas y incluyendo increíbles novedades como por ejemplo las macros de Swift que son las responsables de gran de estos cambios que os hemos comentado, macros que a grandes rasgos lo que hacen es transformar, crear como una especie de estado intermedio entre el código que yo escribo y el código compilado. Una macro es como algo que se pone en medio del código que yo escribo y el código que se compila para transformar mi código escrito en una versión ampliada del código que he escrito que permite crear macros que permiten realizar tareas que normalmente serían más complejas y transformarlas de una manera más sencilla.

    Por ejemplo, el ejemplo que he puesto, la macro de los predicados, hash predicate, convierte en un NS Predicate de OBJETIC el clásico de toda la vida de Jobs se convierte desde un desde un closet de un filter de una condición vale pues es algo que es maravilloso y como eso el arroba observable también funciona con macros y muchísimas de las grandes, muchísimo de los grandes cambios que hay ahora mismo también funcionan con macros. Por lo tanto, pues es, como digo, una forma de hacer el código más legible, más cómodo, más fácil de realizar y estas macros antes de la compilación convierten el código bonito en ese código de una de un mega sintactic shooger lo convierten en el código real que más feo y más engorroso y eso es lo que se compila finalmente por lo tanto yo me libro de tener que hacer ese código engorroso y obtengo un montón de ventajas que estoy seguro que muchas librerías que salgan a partir de este año van a aprovechar también. Así que bueno pues esto es un pequeño, pequeño resumen de algunas de las cosas más interesantes partiendo de la base de que me queda mucho por ver porque no he visto casi nada porque como digo bueno pero he podido por lo menos hacer pequeños proyectos dos pruebas, hacer un proyecto completo con sus data que graba los datos y que funcione, que actualice y que hace todo, etcétera y madre mía el año que viene va a haber que cambiar todo el booth cambie en Suiza de Broward, porque la cosa ha cambiado para bien, ha cambiado para ser mucho más simple y mucho más fácil de controlar.

    Así que ¿Poco más? Y poco más, al final, ¿qué es lo que sucede? Pues que la gente se olvida de que la WWC las siglas significan worldwide developer conference vale no significa worldwide de consumes. No lo sé. Algo así.

    Vale, es decir, es la conferencia mundial de desarrolladores que duran cinco días no solo la presentación de las siete de la tarde y que este año y la verdad que hay que agradecerlo sí empezó en Stead of the Union, porque el año pasado el Stead of De Union fue una cosa un poco rara pero este año sí ha merecido y sí ha estado muy, muy bien, créanme. Por lo tanto, bueno pues al final tenemos eso que la WWC empezó el lunes cinco de junio a las diez y media hora española, que fue cuando empezó el plazón Steittle Jr. La presentación, pues bueno, la presentación estuvo muy guay, sobre todo la última parte, la anterior, toda la parte de hora y media para vendernos. Que han quitado el hate a city, pues en fin. Pues no, en fin, pues eso.

    Podían haber puesto solo a la presentación de Apple Vision y ya está. Pero vamos, ese es el tema. Ok, pero desde luego insisto, perfil bajo en iOS diecisiete el resto de sistemas, salvo ocho s, que si tiene un cambio más importante Pero lo realmente importante son todos los cambios que han hecho a nivel de desarrollo. Ahí es donde está la chicha y ahí es donde hay que decir una y mil veces. Gracias a Apple por un muy buen trabajo.

    Ya saben que si les ha gustado comparta en redes sociales por favor menciónenos como jCFMunoff y nos oímos pronto si Jobs quiere. Hasta entonces un saludo y go.

    Puedes escuchar más episodios de Applecoding en Cuanda.com, la comunidad de podcasts independientes en español.

    Episodios recientes