2.179 oyentes
¡Comenzamos la tercera temporada del podcast!
Arturo y Julio nos cuentan cómo fueron sus inicios en el desarrollo y la importancia de una buena base para luego al comentar las noticias y debatir sobre el estado de las betas de iOS 17 que pronto dejarán de serlo.
Pero en el bloque principal nos contarán cada uno de ellos cuáles son sus soluciones de patrones de arquitectura para SwiftUI y para UIKit, dándonos consejos a partir de su propia experiencia.
Convierte en un Maestro del Desarrollo iOS con el Swift Mastery Program 2025. Encuentra toda la información pulsando aquí.
Suscríbete a nuestro canal de Youtube para seguir el podcast también en vídeo: Caffè Swift en YouTube
Arturo Rivas
Julio César Fernández
Transcripción
Wanda, la comunidad de podcasts independientes en español,
Bienvenidos a Café Swift
en podcasts donde hablamos del lenguaje de programación Swift de Apple.
¿Solo? No. Hablamos de programación, de herramientas para desarrolladores, y
de distintas experiencias, pero siempre desde el punto de vista
de desarrolladores en entornos Apple y del lenguaje Swift.
Esos desarrolladores somos Arturo Rivas
y Julio César Fernández. Comenzamos. Muy buenas y bienvenidos a la tercera temporada de Café Sweet. No, yo cojo aquí en editor ponga efectos de sonido guapo. Pues ya fíjense, tres temporadas, porque las temporadas, como bien saben, corresponden con los meses de septiembre, que sería el inicio del curso académico, entonces bueno pues es lo que se ha lo que se ha notado, ¿no?
A nivel general en todos los podcasts, al menos en la red cuonda a la que pertenecemos, y bueno pues estamos. ¿Qué tal, Arturo? ¿Qué tal esta tercera temporada? ¿Cómo lo ves?
Pues muy bien. Tengo muchas ganas porque a mí volver a la rutina nos no siempre tiene que ser algo malo porque la verdad que he conseguido que mi rutina, que mi rutina me guste, así que tengo tengo un montón de ganas y ya de esta tercera temporada que nos lo iba que nos lo iba a decir la verdad a ver intentaremos como propósito ¿no? El pues tener más lograr esa periodicidad que siempre queremos, pero pero nunca lo gravos porque está visto que contenido no nos falta, ¿verdad?
Contenido no, no falta y nos siguen dando mucho trabajo. Pero sí, vamos a intentar en cierta forma poder grabar al menos cada dos, tres semanas, más o menos. Ahora, como ya te comenté el otro día, hemos suspendido por tema de de mi otro, de mi co host, Oliver Navani hemos suspendido en el Canacer temporalmente, por lo que eso pues al final a pesar de que va a suponer un tiempo sin, sin Nebecanaiser que al final pues es una pena también porque era un podcast que gustaba mucho pero bueno, en algún momento Oliver le volverá a subirse a la nave pues pues bueno eso también me da más tiempo pues para poder tener más regularidad, porque la verdad que el contenido que hacemos aquí es un contenido que es muy hardcore para desarrolladores, ¿no? Y de hecho la verdad que desde aquí quiero saludar a toda la gente que nos escucha y que nos sigue por LinkedIn, por LinkedIn, que se dirían bien dicho. Solo en España somos los que decimos LinkedIn, porque en realidad es LinkedIn y que la verdad que son muchos los que nos conocen y tal e incluso tú como ya comentaste una vez hasta hasta te reconocen las entrevistas no que te dije, güey, esto está mal, me ha entrevistado a un una persona famosa.
No, la verdad es que a ver, para ser un algo tan derecho, la verdad es que los números son son muy buenos.
Sí, la verdad es que sí, por eso hay que agradecer a todo el mundo que esté que esté ahí y que nos siga semana a semana, quincena a quincena que es cuando lo que vamos a intentar seguir a este respecto. Y sin más pues lo que vamos a hacer es irnos a bueno pues al primer bloque que como ya sabemos siempre es el de qué hemos estado haciendo. ¿Y que has estado haciendo Arturo?
Pues yo he vuelto justo esta semana de mis vacaciones, que no me gustan. Hay vacaciones.
Es como el trush. Sí, auditar. Pero ahora ya has vuelto de verdad.
Porque al final siempre, como estoy metido en todos los jardines que hay alguno más, pues algo ha estado haciendo en en las vacaciones y bueno pues al final pues bastante bastante marronazo, además cosas que que no domino demasiado, me ha tocado me ha tocado tocar, valga la redundancia, cosas de backend y demás, pero amigos esta vez tenía un compañero de viajes que me ayudó y no y no es un amigo que sabe del tema, sino el maravilloso chef Pepe. Pues me pilló eso, me pilló con el marrón de que se habían caído y no funcionan unas cosas, y para arreglarlo pues utilizando Chad GPT, pues no sé decirte pues algo que a lo mejor me hubiese llevado sinchage pt cuatro o cinco horas pues en un par de ellas más o menos no solucioné luego un ejemplo que ya sí que es, que ya sí que fue, no digo que me ayudó, sino que directamente me dio la solución, fue que necesitaban unos datos para unas métricas en la base de datos, y tenía que hacer consultas, yo SQL, algo así, sé experto ni mucho menos pero bueno me hubiese podido apañar pero en este caso la base de datos está en Mongo y pues directamente le pregunté cómo sacar en una tabla que bueno, es una colación en Mongo, que tenga esto, esto y esto, como saco esto, esto y esto.
Y a la primera, o sea, creo que le pregunté tres cosas y las tres a la primera la respondió directamente con un código que copié, pegue y funciona.
Es que para el que no lo sepa GPT tiene un motor de construcción de consultas para base de datos tanto SQL como no SQL. O sea, se le dan muy muy bien las bases de datos y por lo tanto permite vale, hacer repeticiones y todo tipo, tú simplemente le explicas tu modelo de datos y una vez le has explicado cuál es tu modelo de datos o incluso puedes hacer una exportación de tu modelo de datos en sql y y se la das al interpretador de código como un fichero anexo y eso hace que él comprenda cuál es tu modelo y y le dices pues hazme una consulta que me recupere esto y te la da hecha y es buenísimo haciendo eso,
pero yo no no lo, o sea, dije, ya, ya no sabía qué hacer, ya me estaba volviendo un poco loco, y dije, pues voy a probar esto, y y alucinado. Y ahora ahora luego me sentía con superpoderes decía, pedirme más, pedirme más cosas. Lo que queráis. ¿Qué métrica quiere? Lo que queráis.
Sí, señor Stark.
Yarbiz, dame una nueva métrica para hacer él. Sí señor Stark.
Sí, sí, la verdad es que que me salvo me salvo el culo constante.
Madre mía, pues yo es algo que que recomiendo a todo el mundo, el uso de ChagPT, yo creo que es algo que deberíamos plantearnos pero vamos sí o sí, ¿de acuerdo? Sí o sí, pues porque a ver que sí, que está entrenado hasta finales de dos mil veintiuno y hay parte de las APIs que no conoce y tal pero es que con ChagPD tienes web pilot entonces le puedes dar una fuente de información externa de una página web y él la interpreta y te da lo que sea incluso le puedes explicar vale yo hice una prueba precisamente hablando de arquitectura de lo que hemos hablado hoy en la que le pedí, ¿vale? Porque quería sentar un poco los conceptos, ¿vale? Porque yo hago clean architecture, ¿vale? Lo hablaremos de ello.
Pero este Clean architection que yo aplico es el Julio architection, ¿vale? O sea, es el que a mí me han dado a entender porque es así pero luego cuando yo he ido viendo los distintos componentes que yo utilizo es cuando yo me he dado cuenta de decir esto se parece mucho a lo que llaman clean architection, ¿de acuerdo? Entonces lo que quería hacer era vestir mi arquitectura de la clean architexure real, ¿de acuerdo? Entonces le pedí a Charge PT que me explicara, como es esaclina architecture, qué componentes tiene, cómo se llama, etcétera. Y entonces pues él me explicó que bueno pues el concepto de los citadores y el concepto de varios elementos distintos vale entonces cuando yo cuando yo lo que hice fue preguntarle o que me explicara eso vale le dije cómo podía aplicar ese concepto de cleaner direction a Suip UI y sobre Suip UI en combined está entrenado con la versión tres de Suip UI, me dio la solución en base a como yo lo hago normalmente.
Cierto que lo llamó de otra manera, lo estructuró mínimamente distinto, pero bueno ya más o menos lo tenía puesto. Pero claro, no tiene nada que ver con lo que se le observará entonces yo le expliqué a Charge PD cómo era o sea cómo es la nueva base de arquitectura con observable. Entonces yo el mi mi pregunta que fue un párrafo no sé cuánta línea, le expliqué detalladamente a HGPT, cuáles son los cambios que ha hecho Apple para el nuevo paradigma, arroba observable, y le planteé la pregunta de si eso me permitiría que yo ya sabía que sí, si eso me permitiría separar los distintos control, digamos, los distintos iteradores que llevan la lógica de negocio de cada parte del modelo, fuera del view model, de forma que estuvieran conectados a través de el observable, de un observable a otro observable. Entonces le expliqué cómo funcionaba y ocho horprecha me creó el código Funcionando perfectamente En base a como yo le había explicado que eran los cambios Entonces a mí me hace mucha gracia y el otro día hablando en privado con Oliver me lo confirmaba, hay mucha gente que dice no no es que Achage P tres.
Es que lo han capado, es que le han quitado capacidades. Es que ya no funciona igual que es de bien que antes. No, no, a ver. Chage pt si ahora lo usas para cosas de primer nivel de dime que como hoy o cómo funciona tal cosa o no sé que no, eso, o sea, ahí sí, ahí las respuestas son mucho peores. Pero si tú trabajas con ChagPT, le explicas, le cuentas, creas una conversación, creas un trabajo en equipo, le vas explicando las cosas por pasos, etcétera.
La capacidad que tiene es la leche. Es muchísimo más alta de lo que ha tenido nunca y va mejorando día a día. Vale, o sea que la verdad que es una cosa bastante, bastante impresionante.
Pues sí, la verdad es que sí que, o sea, es que ha sido un, cuando salió, ya era, bueno, fue a principios de año, bueno empezó a finales de la año pasado, pero bueno, el boom fue por febrero, marzo por ahí, que es que está ahí a la vuelta de la esquina. O sea, y además la cosa es que ahora al hacerlo público, una de las cosas buenas que tiene, es que todo el mundo que lo está usando está reforzando el entrenamiento. De hecho creo que decían que no iban o no han sacado chance pt cuatro pero a lo mejor no había una versión cinco, una versión cuatro punto cinco porque era más interesante en seguir entrenando con todo el feedback que estaba viendo a la, a la versión actual y yo en julio espero que tú hayas tenido una vuelta, una vuelta a la marcha menos accidentada, contarnos qué has estado haciendo.
Pues básicamente preparar el swift de developer program, preparar la formación que comenzamos ahora en octubre, en el que mañana ya se les envía a los alumnos que ya han pagado la matrícula, la perforación. Entonces estamos dando los últimos toques a esa perforación, una perforación donde bueno pues que tenemos en esa preformación es introducción a la programación. Lo que tenemos es, pues, enseñarles la base de cómo programar, es un algoritmo, conceptos fundamentales, diagramas de flujo, pseudo código En fin. Las bases, ¿no? Yo una cosa que que he detectado que de hecho lo comentaba hoy en en Lincoln, es que la gente parece que se ha olvidado de lo que es aprender a programar.
Es decir, al final hay un montón de cursos, un montón de formaciones, que empiezan, bueno, los que empiezan directamente a enseñarte Suip JOY. Y luego ya de paso ya te iré contando que Suip o sea esos ya son para para flipar vale esa es el error garrafal número uno de la historia sobre todo si es un from giro tu giro vale si es un empieza desde cero sin saber nada de programación, o sea estás condenado al fracaso. Pero tú y yo sabemos que cuando uno empieza lo que tiene que hacer es ir a lo básico. Yo cuando empecé en formación profesional de informática de gestión, allá por los años noventa del siglo pasado, primeros de los noventa del siglo pasado
con tarjetas perforadas. Híjole.
Bueno no llegué pero casi. De hecho el primer ordenador que tuve para aprender Pascal, que fue el primer lenguaje que yo aprendí, Tutu no Pascal tres, pues llegó un momento en el que el programa que hice ocupaba demasiado y me dio un error de two men y lynes. Sería demasiada día de código era como pero tú que sesenta es pensado que esto es un ordenador de la NASA, filtro a prisa, porque era un un ordenador ochenta ochenta y ocho de intel con disco de tres con disco de cinco y cuarto de trescientos sesenta k y monitor de fósforo verde. Ese era el ordenador que teníamos a primeros de los noventa en el instituto donde yo estudié, que fue el instituto Saidin Vergeles en Granada, ¿vale? Y fue donde estudié formación -- Porque
quería estudiar las bases, porque había poco más encima de la base.
Bueno, básicamente. De hecho en el en primero de FP dos dimos Pascal, en segundo vimos lenguaje ensamblador de x ochenta y seis, de ochenta ochenta y seis, que a mí me encantó, o sea, el lenguaje ensamblador me flipaba, soy así de raro en el mundo. Era el único al que le gustaba eso. La clase creo yo. Y también dimos Cobol.
Un placer. El tener que escribir en las columnas ocho, doce y dieciséis porque si no, no se compilaba y la, bueno, bueno, bueno, bueno, aquello era lo más tranquilo.
--
ensamblador, sí, sí que di, sí que di en la carrera. De hecho, lo hacíamos era como muy muy comentado porque lo hacíamos con un microprocesador que se llamaba el el mips que era el de la Playstation uno o algo así,
¿sabes? Sí.
Mira como hay joven, estoy programando en el de cara de aquellas, estoy programando en el en el procesador. Es que al final es interesante porque a ver, ahora mismo y yendo a swift, tú la la línea que escribes en swift pasa en una cantidad de movidas, hasta que hace algo esa línea tanto como llega el procesador pero como luego eso que pones mueve un icono o yo qué sé o hace un botón o sea todo lo que pasa por ahí en medio hay muchísimas capas que que que de aquellas ni ni se ni se habían a lo mejor alguien la había pensado pero era pero no se podía realizar porque no había potencia suficiente para realizar todo eso. Y ahora lo damos como un poco por por sentado. Os pones soy UI pues pones botón y ya está le pones un título y una acción y venga ya tienes un botón perfectamente y claro a veces no nos damos cuenta de por todo lo que lo que hay que pasar, pues eso, por ejemplo, en el lenguaje ensamblador, pues eso lo tenías que decir a los a qué registro tenías que mover cada cosa, cada dato, luego para leer de memoria.
Es el libro gordo de Peter. Tenías que mover, o sea para ir que hacer como tres o cuatro instrucciones para sacar un dato de memoria primero. Primero lo tenemos que sacar de la memoria y meter en el procesador y eso ya eran varias líneas de código. Sea que todo lo que decimos que ahora se hace directamente con, pues con una línea de suite, pues ahí hay una una complejidad tremenda. Y de lo que comentas de de no ir a las bases, precisamente hoy estoy hablando con con un compañero que les de de bacán y y bueno un saludo a Alex que nos oye y me decía Joel pues me animaba a hacerme un curso ahí de Suiphe, de Suiphe y de Suiphe y yo ahí tal y se ha puesto oh sorpresa con el de Paul Hudson, de cien días con Swiss.
Y le pregunté lo primero y pregunté, ¿y cuánto dedica a Swiss? Y me dijo creo que hasta el día quince es solo Swiss. Y claro yo le dije a ver, yo en tu caso te diría que vale porque tú sabes programar o sea, tú tienes mucha experiencia ya programando con type-script y javascript, node, y vale. Pero joder, un curso de cien días de Suge UI, que es alguien que cuando dices tú, sino tu giro con quince días a mí se me hace muy poco.
Pero además, ¿cuántas horas al día? Porque eso también es importante. Porque si al final yo por ejemplo con el switch de lopper program, cuando ya la gente ve esta perforación, ¿vale? Cuando ya la gente ha aprendido esta metodología cuando hace los cuarenta ejercicios que les pongo de algoritmo y pseudocódigo y diagramas de flujo, etcétera, pues al final bueno pues si pueden empezar ¿no? A ver swift y swift nosotros lo vamos viendo pues aproximadamente creo que son dos semanas y pico más o menos depende de cómo funcione el grupo a nivel general porque nunca van todos los grupos al mismo ritmo pero en principio suelen ser un par de semanas semana entre dos y tres semanas, ¿vale?
Pero claro, son dieciséis horas de clase a la semana, ¿vale? Es decir, estaríamos hablando de que estamos viendo Swift aproximadamente entre treinta y dos y cuarenta horas de formación. Entonces eso, más todo el refuerzo, más los ejercicios que se les pone, el trabajo que tienen que ellos que hacer, etcétera, etcétera, Pues sí permite. Ahora, si son quince días, donde estás echando como mucho media hora una hora que no creo que sea más, lo que le exija esta formación, pues obviamente no es suficiente. No es suficiente.
Y sobre todo a ver que la formación que tú das tú ves cómo va la clase, pones más o menos, más más rápido,
voy adaptando en tiempo real, según cómo van, de hecho lo más complicado muchas veces es adaptarse a el grupo en general, porque dentro del grupo hay gente que más rápido, hay gente que va más lento y entonces tienes que dar clase para todos, no puedes ni aburrir al que tarda menos, ni hay y dejar que se pierda el que tarda más, ¿vale? Entonces en ese sentido tienes que llevar un poco el control ¿no? Pero bueno, necesitas una serie de horas, incluso si ya sabes programación, ¿vale? Porque al final De hecho es una cosa que que que me ha pasado siempre, ¿vale? Y tú lo has vivido.
La gente llega es como no no pero yo ya sé swift y yo siempre digo lo mismo, ¿crees? Que sabe Swift. Pero cuando ya
lo he comentado yo tenía dos o tres aplicaciones publicadas en el store cuando hice el curso de upgrade. Sí, sí, o sea,
y sin embargo pues no cuando hiciste el curso con con nosotros pues después de
una pila de cosas que no que en en la vida que se imagina o que
se podían hacer, pero lo que le pasa pues a mucha gente, o sea que en ese sentido, y al final pues por ahí empezamos. Fíjate esta es la la letra del julio de los que estéis viéndolo en vídeo vale esta es la letra del pseudo código del julio de hace treinta años usted haciendo pseudo código de algoritmos y de elementos y tal, estructuras etcétera etcétera pues, en fin, ahí tenía los apuntes en el lado, que esto pues lo he encontrado en casa de mis padres y y nadie me lo he traído pues porque la verdad que es es sumamente interesante. Y como digo pues es es el comienzo, ¿no? Y de hecho incluso esta tarde determinado de editar un elemento que se ha metido nuevo que es el tema de un glosario de términos vale es decir que que se coja y que se expliquen términos que en muchas ocasiones no están tan claros, esto es algo que nos han pedido los propios alumnos y que se ha incorporado a la formación, ¿vale? La gente antes del del propio bootcamp nos dijo oye es que son un montón de términos que se hablan que si API res que si del http, que si él no sé qué, que si en fin, un montón de cosas que que que si el lado servidor, que si no sé qué, son cosas que claro, nosotros damos por hecho que que es algo que ya conocemos, pero no todo el mundo tiene por qué conocer esos conceptos, ¿no?
Un shock, ¿no? En un sistema una chip, cosas así, ¿no? Entonces pues hemos hecho ahí un un glosario de términos que al final pues es una hora y pico de de de vídeo pre producido pues para que tengan también esos conceptos y que no se les escapen, ¿no? Entonces bueno pues la verdad que que, bueno, pues es un poco lo que hemos estabilidad en estos días. Básicamente.
A ver, yo yo sé que lo he dicho mil veces, pero es que la verdad lo estáis suyos y te lo está diciendo Julio. La preparación que lleva, porque hay gente que dará cursos de de Suite, de Suite, de Suite, de Suite UI, de Suite, de lo que quieras, pero te digo que actualizado a justo lo último que acaba de salir. O sea que, que Julio se ha estado pegando con la beta y ahora, ahora nos contará los desvelos que le ha dado con las nuevas vetas y con las que ya no sólo la veta de los sistemas pero como sabéis hay las digamos las cosas de información y las APIs también están en beta vale y van cambiando durante cuando desde que lo presentan en en junio hasta que sale definitivamente de septiembre van cambiando. Pues no solo se contenta con eso Julio, sino que eso recoge feedback todos los años. Mira pues, este año, un glosario de de término, la verdad es que eso es que sí que está bien, sobre todo en en este mundo que por cierto por desgracia, pues eso cada año viene Apple el la primera, segunda semana de de junio y dice, ¿te los acordé del año pasado?
Pues mira, la mitad ya, la mitad o la tenéis que saber también para soporte otras versiones anteriores, pero mira, aquí tenéis todo esto nuevo que es lo que recomendamos usar.
Pues sí, de hecho incluso que de hecho te lo te acuérdate que te lo envié el otro día con el la la nueva animación que ha hecho para las para explicar la arquitectura nueva de observable y tal y cual que ha actualizado el tema de Shibbi, para ahora, para esta formación, entonces pues ya está actualizado con cómo funciona, en años diecisiete, los cambios que tiene con respecto a dieciseis, cómo se conectan las distintas partes, etcétera, al final la introducción a Suip YoAI son más de cien slides dentro del came out para explicar todo eso, o sea que.
¿De dónde, de dónde salimos y a dónde llegamos?
Sí, sí, totalmente, o sea, y además esos slides ya están actualizados con el hash preview de scope de quince, con el código actualizado, con todo lo nuevo, o sea que en ese sentido pues bien llevamos todo el verano pero bueno como dice Johnny al final pues no quedan ahora mismo, momento en el que estamos grabando solamente once plazas de las cuarenta que se han convocado, o sea que bueno la verdad que eso quiere decir que la gente está lo está valorando y la verdad pues que es algo que se agradece no.
Pues sí y Julio si te parece vamos como la actualidad manda ¿vale? Vamos a mostrar a la siguiente sección de las noticias. Y claro las fechas que estamos no podemos dejar pasar ni mucho menos por lo que está haya a las puertas, porque ya sabemos la fecha que presenta, bueno, de la Kino de Apple de septiembre, donde obviamente pues se presenta seguro el iPhone, luego ya prácticamente seguro el iPhone.
Wonder Last
eso. Yo estaba viendo mi enterado, mira a ver si he estado desconectado o o que si he tenido marrones esta semana que no le he prestado atención ni a ni a todo el la leyenda que se forma por el logo y el eslogan.
Bueno, la gente ya sabe los colores de los nuevos iphones, gracias a la al al logo, aparte ya se da por hecho de que es una alegoría de el chasquido de Thanos por ese por ese polvillo así, no sé qué, porque lo que ha hecho es dar un chasquido para que desaparezca el Lightning y entre USBF y y también sé los colores y tal.
A mí se me pregunta por el luego digo.
Voy a dejar las drogas que son malas. Las drogas son malas. Abusar de la droga no es bueno. Un poquito de bien cuando, mi hijo no, mi hijo droga no, un porrito de bien cuando, no abusé.
La verdad es que la verdad es que cada vez peor es que o sea no hace más que empeorar. Que no hace más que empeorar. No hace más que empeorar.
Pero sacando noticias noticias en medios serios. De no, no, es que el color de tal indica que habrá un
caché filtran los colores.
Un lado mentolado de tono metálico o aclarado de María.
Solo tengo una duda, Julio. Bueno, tengo varias, pero si quieres te, y además me gusta hablar contigo porque Jorge, eso sabéis y seguramente que tengamos el el meganálisis donde nos lo aclararás porque yo y de hecho antes cuando estábamos en el cuando entramos en directo estamos hablando de ello, que por ejemplo el procesador a dieciséis, pues uno de los problemas que tiene es que tiene muchos componentes, pero como no llegó esa arquitectura de tres nanometros, pues no es suficientemente eficiente, por decirlo de alguna manera, y genera mucho calor. Y el problema este del vateríage, vamos a llamarle mira ya está. Vateríage ve que los iPhone catorce Pro Sí, porque los los catorce normal llevan el chip del año pasado. Se han calentado mucho, con lo cual tiene, pues el mío por ejemplo tenía, el no tuyo tiene un noventa y tres, lo que dijiste, el mío tiene un noventa por ciento que es mucho.
Vale. Para lo que es.
Mucha degradación. Para un año. Sí.
Entonces mi pregunta es, sabiendo o casi confirmando que el A diecisiete tendrá esos tres nanometros, Yo, mi deseo es que me da igual la potencia. O sea, quiero decir, prefiero que base en el que da diecisiete se centre en tener una mucho mejor mucha mejor batería. A ver, no sé cuán equivocado estoy. Por suerte mucho.
La nueva arquitectura de tres nanometros de los a diecisiete va a representar un la mejora de la eficiencia energética de según datos filtrados de la línea de producción de los chips de tres nanometros, del proceso de fabricación de tres nanometros, parte filtrados, parte de datos hechos públicos por la propia DCMC, puede llegar a mejorar hasta un treinta por ciento la eficiencia energética. Es decir, que a misma exacta potencia. Un A-diecisiete generaría un treinta por ciento menos de calor que un dieciseis y consumiría por lo tanto lo he dicho mal consumiría un treinta por ciento de energía consumiría un treinta por ciento menos de energía que una dieciseis y por lo tanto generaría menos calor, porque cuanto menos energía consumes, menos calor generas. Ese es el funcionamiento, ¿de acuerdo? Entonces ¿qué es lo que sucede?
Sucede que papel tiene que poner bajo la tiene que poner en la mesa el decir qué voy a hacer este año voy a aprovechar esa mejora de eficiencia energética y voy a dejar el a diecisiete con la misma potencia que tiene la dieciseis a nivel de reloj, a nivel de gigahercios y a nivel de núcleos, ¿vale? Porque el problema es ponerle más núcleos o ponerle más transistores a cada núcleo para que el mismo núcleo claro alguno puede decir no, es que el A dieciseis tiene los mismos núcleos que una quince, sí, pero la que cantidad de micro transistores que tiene una dieciseis es más y por lo tanto a mismos núcleos va más rápido aparte de que va a más gigahercios entonces si cada núcleo tiene más componentes o le ponen algún núcleo más que es lo que han hecho con los m dos los m dos son iguales tiene el mismo sistema de fabricación que los m uno me refiero en cinco nanometros solo que el m dos tiene la segunda generación de fabricación en cinco nanometros que es la que corresponde al a quince mientras que el m1 tiene la del a catorce que es la primera generación, la primera iteración de la construcción en cinco nanometros de TSMC.
Entonces, ¿qué es lo que sucede? Que cuando yo Tengo ese esa brutal, porque las predicciones antes de la fabricación de DCSMC era una mejora entre el quince y el veinte, y después de imprimir las obleas se dieron cuenta al medir de que llegaba un treinta. O sea que la la la litografía ha salido mucho mejor de lo esperado. Pero si Apple decide que quiere salir en la foto diciendo, has andado chiva, has uno hace cuantos por ciento más rápido que Cuanto más sea ese porcentaje Cuando llegue la presentación y nos digan a un nuevo procesador, a diecisiete es un quince por ciento más rápido que el anterior a dieciseis quiere decir que le han quitado un quince por ciento de eficiencia energética con respecto a la mejora del treinta por lo que sí va a calentarse más. Pero No va a calentarse, es decir, va a calentarse más que si no le tocaran la potencia.
Va a seguir calentándose a un quince por ciento menos, que el modelo de la dieciseis, pero como lo has hecho más rápido, vas también a perder parte de esa eficiencia, ¿vale? Por lo que lo ideal y según los rumores, Apple se estaba planteando cómo vender el nuevo chip vale porque si te acuerdas en la dieciseis prácticamente ni se habló de él en la presentación de los iPhone catorce pero de hecho nos enteramos después en análisis que tenía a RMV9 como conjunto de instrucciones, que era el primer chip de Apple que tenía este nuevo conjunto de instrucciones que ni siquiera lo tiene el M dos, ¿vale? El A dieciseis es el único chip de Apple que tiene el conjunto de instrucciones versión nueve de ARM. ¿De acuerdo? Todos los demás tienen el la r m v ocho versión tres que es el que tienen desde hace bastante tiempo.
Entonces, el kit de la cuestión está en que claro,
en el marketing julio, claro como el marketing te vende un procesador que va igual pues diciéndote que la batería dura un treinta por ciento más
ahí está el kit de la cuestión, si Apple decide a nivel de marketing, darle prioridad a el lo que es la eficiencia energética y venderlo diciéndote es un treinta por ciento más eficiente y le va a durar la batería mucho más pero luego cuando hacen los los benchmarks prácticamente no gana casi nada o a lo mejor un tres o un cuatro por ciento que sería algo coyuntural más por la propia construcción que porque realmente sea una mejora de velocidad.
Claro que es más eficiente y le permite estar a tope más tiempo.
Exacto. Entonces ahí tendríamos un procesador que sería que no calentaría el iPhone o prácticamente, no lo calentaría y y que haría que la batería durará bastante más, ¿vale? No podemos olvidar que la CPU al final, como es un system, una CHIP, ya no solo la CPUs es todo el conjunto de elementos en general vale entonces todo eso aporta pero al estar todo construido en tres nanometros todos los componentes van a ir mejor, ¿vale? Por lo que efectivamente, de hecho, una de las cosas que hablaban sobre el posible cambio de estructura de los del Apple Vision Pro es que Apple a última hora decidiera no poner el M dos, que insisto, es cinco nanometros de segunda generación y pusiera el m tres, porque se sabe que hay ciertos problemas de calentamiento con el m2, ¿vale? Porque cuando se le exige mucho rendimiento a ese m2, un m dos que no está, o sea que tiene una disipación activa vale, es decir, el el Apple Vision Pro tiene ventiladores vale, y se escuchan muy bajito muy bajito muy bajito pero se escuchan y tiene salida de aire vale entonces si hay Apple usara un m tres permitiría que la batería durara algo más de dos horas, pero sobre todo que no tengas la sensación de tener en tu cara algo metálico que tiende a calentarse, lo cual va a ser bastante molesto si llevas mucho tiempo usándolo.
Entonces esas cosas pues siempre hay que tenerlos en cuenta, entonces veremos a ver cómo nos venden el procesador partiendo de la base Pastiendo de la base de que este procesador nuevo solo va a venir en los modelos Pro, Los modelos no pro van a tener a dieciseis. Y ojito con eso, porque si van a tener a dieciseis, les va a pasar lo mismo que al Pro, que como no esté bien disipado, vamos a tener de nuevo un better gate de que al año todos los iPhone quince y quince plus se van a ir bajando la la lo que es la la duración de la batería, la vida de la batería a un porcentaje pues más bajo de lo que suele ser habitual.
Pues sí, yo espero, ¿ves? No iba muy desencaminado.
No, no.
Porque sí, es que no, a ver, es que yo creo que ya llevo, de hecho el iPhone Doce Pro que tenía antes, jamás hubiese dicho, es que esto va lento. O sea yo creo que en el iPhone que ya llevo y si me remota anterior que tuve no me acuerdo cuál fue, Pues diría que exactamente lo mismo porque porque no se llega a un punto que el iPhone no es que no tienen no el iPhone y también a la diecisiete teniendo en cuenta que se va a utilizar, es que ni siquiera un iPad Air ya lleva la serie M. O sea vas a tener un procesador para un teléfono y para el más bajo de los iPad. Es que te sobra con lo que tiene con la potencia que tienes ahora y precisamente es lo que lo que pide la gente no sé. Yo espero a lo mejor con lo del batería y test de que que hayan tirado, bueno iba a decir que espero pero esto la decisión la habrán tomado hace medio año por lo menos.
La estrategia estaba hace media año por lo menos y no sé si has oído algo bueno el USB c ya se da por late que traerán, pero bueno la sorpresita esa de que los modelos no provan a tener una versión
excavada. Pero es que no
va a ser
tan pesado. Eso va allá. Es que lo del USB va a ser el caos. Va a ser USB caos,
porque no va a valer el cable, un cable no va a valer para los
Claro, es que eso va a ser un caos, es que primero, gente que va a tener los iPhone quince y quince Plus, que van a comprar el cable cutre al chichero de Amazon de oferta de turno, tal y cual, y cuando vayan a cargar, resulta que va a cargar mal o no va a cargar o no va a cargar ir carga rápida. Apple te va a decir que tiene carga rápida y no va a cargar en carga rápida. Y vas a decir que qué le pasa al iPhone que es muy malo, no, es el cable que te has comprado. Vas a intentar conectarlo para sacar la foto a través de cable o lo que sea y no va a funcionar o si funciona. Resulta que te vas a dar cuenta que la velocidad que tiene el iPhone quince, quince plus, que es lo que tú decías, es la del lightning.
Es decir, que el iPhone quince y quince Plus por USB-C funciona USB dos punto cero. Cuatrocientos ochenta megabits por segundo o sea de vergüenza de vergüenza va a funcionar insisto exactamente igual que cualquier iPhone a la misma velocidad El Pro va a tener un USB c capaz de soportar cables y hasta ciento cincuenta vatios pero obviamente está topado en carga de treinta y cinco vatios que va a ser la carga rápida que va a tener este modelo Pro. Pero no solo eso, es que la coña aquí es que te vas a comprar un cable porque resulta que el Pro es Zunderbolt cuatro, USB cuatro punto cero, generación dos, topado en veinte GB segundo. ¿Vale? USB cuatro, Thunderbolt cuatro llega a cuarenta gigas, pero Apple lo ha topado a la mitad ¿vale?
¿Por qué? Porque en un dispositivo móvil tener una tasa de transferencia con un cable de cuarenta GB primero el cable te vale una pasta porque no te sirve el cable de oferta de Amazon tiene que gastar como mínimo sesenta o setenta pavos en el cable, ¿vale? Para que tenga ese ancho de banda y soporte esa cantidad de electricidad dentro del cable pero transmitir con un móvil que no tiene disipación activa más de veinte GB es una locura porque te fundes el móvil, ¿vale? Porque a más datos en el mismo espacio de tiempo por la misma salida más calor generas y la entrada se puede pegar. ¿De acuerdo?
Esto es algo que la gente no conoce técnicamente. Entonces la gente se va a comprar el cable barato de Amazon de diez o quince pavos veinte y no le va a servir y de pronto le va a ir lento o no le va a transmitir o se le va a cortar o no va a detectar el iPhone cuando lo conecte o no va a cargar o va a cargar en carga lenta y no va a funcionar con la rápida porque USB C es el cajón de sastre USB C es un conector universal donde entra todo puñetero protocolo del mundo desde el protocolo antiguo del mundo de la historia de cuando iban los unos y ceros por tambores, Hasta el Thunderbolt cuatro Y la gente la va a montar pero fin a fin y se va a liar una que no somos conscientes.
Sí sí sí está claro. O sea por un lado vale lo del USB te lo compro pues es un carajal de tres pares de narices pero por otro lado Apple poniendo distinto, o sea, haciendo esas distinciones entre lo el estándar, haciendo esas distinciones entre entre un modelo y otro pues todavía lo baja, lo van a revisar un poco más. La verdad va a ser va a ser gracioso cuando cuando lo presenten a ver cómo lo logran vender porque porque algo tendrán que decir. Hombre. Bueno, apenas voy de esperarse y luego a ver qué hace la gente.
El cable de Apple oficial para poder sacar fotos y vídeos. A buena calidad, Con el nuevo iPhone quince Pro cuesta ciento cuarenta y nueve euros precio oficial en la web de Apple. Lo que hace
es que se, que no, que no un poco, que no un poco de pavo.
Y bueno, ¿cuál ha sido tú? Porque tú sí has probado las vetas de que lo has lo has montado en el iPad, ¿no? Creo.
Y no, y al final caí en el iPhone Watch también. Bueno, en los Apple TV, en los HomePods,
en todo, o sea, ha metido todo el
no menos menos en el Mac, que obviamente no puedo porque tengo que seguir utilizando SCORM catorce. Que de hecho es algo que no entiendo, porque las versiones finales tú ahora actualizas y siempre te puedes bajar luego el scope catorce y qué.
Ya pasó el año pasado. El año pasado scope trece dejó de funcionar en Ventura. Desde la primera meta. Hay un truco. A ver, hay un truco de la almendra.
Truco. Truco. Que por ahí.
Cheque y puede seguir ejecutándolo vale pero no no estás
me gano, como me gano el pan con ello, pues dije no, mira, básicamente. Aquí no,
¿cuál ha sido tu experiencia con las con las vetas.
Había montado todo, salvo el salvo el maque que me ha de comer y bien mi sensación es que no hay muchas novedades digamos de pues eso. Que, pues es, de novedades en general, pero sí que noto como, o sea, toda la interfaz y los cambios de interfaz del Apple Watch me gusta muchísimo. Hablando común hay de un héroe nuevo que hace que sea, no sé cómo decir lo más dinámico, ¿vale? Porque tiene como más color, las marcaciones, ya dejan de ese negro y y y luego lo demás de la interfaz en blanco, en otro color, pero siempre el fondo negro, sino que como más vivo, no sé. La verdad es que me ha gustado fluidez, va perfecto, o sea así que no,
¿qué qué es lo obtienes? ¿Qué series es?
El del año pasado pero el no, bueno bueno es el del año pasado pero el último que ha salido el ocho yo creo que es.
Vale. O sea no. Sé que es el último que hay ahora mismo a la venta.
Sí. Y perfecto, y luego el iPhone igual, el iPhone muy bien, de hecho yo creo que lo comenté han cambiado, es que lo vi lo WC han cambiado como la las animaciones, han cambiado el efecto de animación y para mí le da un aire nuevo, de hecho a veces he cogido el el teléfono de de mi mujer que tampoco es muy fiable porque porque el suyo es un quince plus o sea un catorce plus y no tiene el refresco de pantalla tan alto, pero no sé, me da la sensación de que va un poco más más trabadas las animaciones. Y nada, de hecho tengo, bueno, te pasé a ti un error de la pistola nada, del layout que metieron unas últimas vetas, que nada y bueno y uno que tenía del centro de notificaciones que que al pintarse si hay muchas notificaciones al pintarse primero se pintan las notificaciones sin los bordes redondeados y luego se ponen bien, que eso ya venía de los dieciséis, en cada versión beta nueva les he mandado en la aplicación de feedback sigue pasando y otro vídeo en el que pasa. No me hace ni puñetera caso, pero yo creo que este año de estabilidad, que es al final lo que importa, muy bien.
Las novedades son pocas, pero pero la verdad es que bastante bastante pulidas y en el en el appTV han hecho el, bueno no he podido probar porque mis UPLTV son, tengo dos y son muy viejos, no he podido probar el FaceTime en el UPLTV. Que eso me quede con ganas y de hecho esta fue una de las razones por las cristales por las cristales la veta porque bueno pues con con la línea y tal por las abuelas, llaman un montón y eso pero no no puedo probarlo y luego además han puesto los íconos más pequeños en la parrilla y le han dado así un efecto que que está bastante chulo. Entonces yo creo que este año en la parte y ahora es que donde voy a preguntar a ti por lo que hay detrás En la parte que se ve, yo este año chapo, pero Julio cuéntanos que tú has estado en el lado oscuro, ¿Cómo está ese ese dios diecisiete, las tripas de ese dios diecisiete y las nuevas APIs para desarrolladores?
Pues a ver, Suip UI está a un noventa y cinco por ciento, ¿vale? Es decir, ¿tiene alguna cosita un ajuste que le falta por aquí, por allá, pero más o menos todo Suip JOY ha funcionado bastante bien desde el comienzo de las vetas. Hay que tener en cuenta que con Suip UI tenemos un montón de novedades sobre todo por ejemplo con respecto a las animaciones, ¿vale? Podemos utilizar animaciones con key friends, por por fases, hacer un montón de cambios en la curva de animación de todo lo que vayamos a hacer. Es decir, hay una API completa de programación de animaciones que es una auténtica locura, ¿vale?
Pero lo juro. Y sobre todo ser más sencilla. No es no es del todo, o sea, no es del todo sencilla, La verdad es que yo estoy viendo la charla y no es del todo ese tío. A vela.
Tienes que saber. Pero es más sencilla. Claro saber. Al final si quieres hacer una una una curva de tiempo muy personalizada pues te va a costar unas cuantas líneas vale porque tienes que hacer un keyframe en el que le digas que en el dos vaya no sé qué en cero tres acá no sé qué, en el cero cuatro no sé cuántas, o sea tienes que, no, es costoso a nivel de líneas, ¿vale? Pero si estás acostumbrado a cómo funcionan las animaciones, sobre todo con con con CSS, ¿vale?
Con HTML cinco canvas, etcétera, puedes sacarle cosas muy chula, vale, de hecho nuestro amigo que no puede beber Coca Cola, mentó, pues ha hecho cosas bastante impresionantes con con animaciones, ¿vale? Pero el gran problema de este año se llama observable y sobre todo su data, ¿vale?
Pues su data te compro que que bueno, es algo nuevo pero observable, que es el, o sea, me refiero, cualquier aplicación que hagas va a tener que usar, o sea, puedes usar lo anterior, pero va si quieres usar observable lo va a usar sí o sí todas las aplicaciones.
Sí. Pues observable tiene cosas raras, ¿vale? Por ejemplo, el hecho de que observable no esté conformado que es un error que tengo reportado a Apple, con Jashable hace que los datos no puedan ser usados en un maestro detalle directamente, ¿vale? Entonces al no poder ser usado en un maestro de detalle directamente cuando inyectas la dependencia del detalle, el problema es que el dato que inyectas no es reactivo. Entonces la única forma de hacerlo reactivo es lo que te mandé el otro día.
¿Qué es? Traértelo de un emvironment que viene inyectado desde la app con una dependencia y crearte sobre línea de definición dentro del view una barravaindable ds arroba enviorment.
Pero ahí guardísimo en todo el medio.
Pero además que queda espantoso. Pues -- Eso
lo mandaste, lo vi, dije, no puede ser. Lo además está ocupado, luego lo miro. Lo volvió a mirar, dijo, estoy a ver, estoy flipando y voy a sentarme tranquilamente y verlo y efectivamente.
Es decir, para el que tenga la duda, nosotros ahora mismo, si yo creo un observable objeto y género, un arroba ObserveDoughed o una stakedoughed que debería de ser solo un Observe Doughed, pero bueno en casos donde tengo varias fuentes que refrescar la view y no quiero que me reinstacie el observador bien. Pongo el state aunque no debería ser lo que lo que haríamos pero bueno el caso es que sea observed o sea state o sea un envío menor jet que capturo de no inyección desde el comienzo de la app en todos los casos. Sabemos que esa instancia tiene la distancia normal que accede a las propiedades, y la instancia que es el acceso a los bindings, es decir, el VINDABOL, el dólar en el que yo pongo dólar VM y dentro de ahí accedo al binding de cada propiedad publish que hay dentro de ese view modem. Pues eso ha cambiado. Eso ha cambiado.
De forma que ahora, cuando yo hago una state o hago una environment, para capturar un view model que ahora es observable, resulta que no tengo acceso. A los bindings de esas propiedades La única manera de hacerlo es sobre código de la view definir una barravavainable directamente para que me genere ese dólar de acceso a los bindings cada propiedad dentro de la ropa observable. Es decir, una cosa espantosa, ¿vale? Básicamente. Ok.
Espantosa de ver pero es que aunque el aunque lo sepas, porque bueno es algo al final es una receta que te aprendes y ya está. Madre mía, o sea, para la gente que está empezando es que Es que no sé.
No no es que no tiene ningún sentido. Y el problema no
daba crédito.
Claro, el problema es la macro, porque la macro como tal, les impide cumplir con el con la conformación de Jasabol y les impide meter un observable dentro de un observable vale porque al final el arroba observable lo único que hace es añadirle a cada propiedad la propiedad with observación track que tracking vale que básicamente with observación tracking es algo que yo puedo utilizar vale básicamente es un closer reactivo vale yo le digo with observation tracking y le doy la propiedad que quiero o el lo que quiero que observe, ¿no? Entonces, en el momento en el que le doy lo que quiero que observe, le doy un closure llamado Unchange, que lo que hace es saltar cuando hay un cambio que por cierto era un change porque era un deep change es decir que sucede después del cambio y en la última versión lo han cambiado a un will change.
Will change.
Que ahora sucede antes del cambio. Por lo tanto han cambiado por comportar abierto, como ya hicieron con Suip Juie al principio, que recuerdas que el Object Wheel, el cambio de objeto del observable Object era object the change y en las últimas vetas lo cambiaron a object will cambiándole el ciclo de vida al sistema vale Entonces, en fin, es más fácil que lo que había hasta ahora, sí, es más fácil es más claro es más limpio sobre todo pero si lo has dejado tan limpio tan bonito hostia no me pongas eso ahí que es una chapú, ¿vale? O sea, ese es el key de la cuestión. Está mejor que antes, sí. Pero es como poner oro y entregártelo en un cofre de madera podrida vale por ver el símil, ¿no?
Eso por el lado de lo observable.
Julio es que, Julio sigo sin creer, o sea, y y el otro de lo y lo me lo sigo pensando, que lo vayan a sacar así la versión final, o sea que la r c no haya algo que digan mira, no lo hemos abordado. Extra me extraña, Es que es muy feo.
Yo les voy a poner otro porque además todo lo que estoy subiendo lo estoy poniendo también los foros de Apple para ver si alguien me hace caso. Con la referencia del feedback, ¿vale? Con el FBI, no sé qué, no sé cuándo. A ver si alguien me hace caso, pero no me hace caso. Entiendo que deberían de de tenerlo en cuenta, no lo sé.
Y luego está el otro el otro gran problema que ya hemos comentado, que es el de Suiz-Data. Suiz-Data la última beta ha tenido la beta ocho no, la siete, tuvo cambios que rompían el código que ya estaba hecho en su dieta, ¿vale? En la beta siete, Conseguí arreglarlo, ¿vale? Porque el problema es que han cambiado el nombre del default Executor, ¿vale? Y ahora ya no se llama default ejecutor sino que se llama main default ejecutor o algo así, alguna cosa rara, Pero bueno, el caso es que, para que nos hagamos una idea.
Swiss data a día de hoy no es capaz de funcionar en segundo plano. Aunque tú lo configures en segundo plano Aunque tú pongas un task en segundo plano Aunque esté todo configurado que funcione en segundo plano cuando tú pones una carga en batch de sweet data de cientos o miles de registros la interfaz se queda congelada. Y hasta que no acaba la carga no vuelve. ¿Por qué? Porque por algún motivo los el contenedor que conecta el modelo lógico con el físico está sobre el main actor que es el único elemento que tiene el contenedor de su IDATA para controlar al estar sobre el main actor quiere decir que es, o sea, está protegido por concurrencia contra para evitar problemas, ¿no?
De data race, o que pueda haber varios accesos a la base de datos. A la vez vale en eso está bien hecho pero está hecho sobre el main actor no sobre un actor en segundo plano por lo que hagas lo que hagas todo se ejecuta en primer plano Todo se ejecuta sobre la sobre la yoga y principal. Entonces claro, es fatal. Entonces, lo que esa
mierda la tenía cordada, o sea, si cordada, si algo tenía bien era que tú trabajas con tu main context, que ibas sobre el sobre el hilo principal y podías crearte ochenta hilos en background, o sea
--
Cuesta contextos en background.
Los containers de Swiss data no tiene el único context que hay en un container de suizata es el main context que está además definido sobre main actor y ese es el que estoy convencido que está usando porque no hay un un o sea tú en suite data sobre todo con asina en perdón con data con asina white hacías un un nuevo contexto en background y listo.
Has castigado.
Has de ese contexto y y trabajaba todo en segundo plano. Pues nada, con su y data no funciona.
Entonces además tenías como las dos astracciones tenías como estoy en un contexto y aparte tenía las operaciones de batch que iban directas contra la base de datos sin pasar por sin pasar por memoria, joder, no sé, es que
Mi teoría es que lo han hecho así, porque recuerda que Swiss data al principio no era capaz de detectar cuando había cambios en segundo plano en la base de datos.
Cierto. Sí. ¿Vale? Sí.
Entonces mi teoría es eso
fue mi primera prueba. Claro. Pudes cacharrear un poco según lo presenté.
Claro. Creabas un contexto en segundo plano actualizabas la base de datos y en las primeras vetas no se enteraba la interfaz de que había habido una actualización y tenías que cerrar y volver a abrir el la aplicación para que detectara ese update y lo reflejada en la carga vale. Mi teoría es que la forma que han hecho para que la interfaz se entere de que ha habido un cambio en la base de datos es hacer que el contexto funcione y lo principal, ¿no? No me hagas eso.
Muerto el perro se acabó la rabia.
Pero o sea con yo ponme un patrón aunque sea un notification center por detrás, me da igual. Que se llama, que se llama, se llama, se
se llama, que quisiera.
Era muy objetive.
Pero o sea me refiero a hacer eso, no es, o sea, es hacerlo bien pero y con herramientas que asiste, te quiero decir, no hay que crear nada súper avanzado, nuevo, que tengas, yo que sé, pues como no no hay que hacer una revolución. Es que son cosas que que existen. O sea un vuestro lado de base, o sea un digamos un framework de de persistencia lo hay en todas las plataformas de desarrollo de apps, en todos los los lo hay, o sea, no sé. ¿Cuál es el problema?
La beta siete ha tenido más de diecisiete feeks solo de Suiz-Data. Entre ellos, han hecho una macro de expresión el hashpredicate para evitar tener que usar, los predicados de en ese predicate con la construcción de los predicados, esta que tiene parte SQL, etcétera, etcétera. Ahora los nuevos predicados son wise pero el problema es que los has predicate por cómo están funcionando las macros de expresión de Sweet cinco punto nueve ¿Cuál es el problema? Que hasta la beta siete no podías poner en un predicado ni una fecha ni un Yuyaid. No lo soportaban.
Bueno y ya ya soporta que también paso los problemas que estuve haciendo. No. Fichar cuando un campo es nulo.
Sí, sí soporta eso. Lo que no soporta ¿vale? Que es una cosa que te vas a partir la caja es preguntar por propiedades de instancias Sí sí sí sí lo has oído bien. Si tú tienes la instancia persona y quieres preguntar por, ¿nombre es igual a persona punto nombre? No puedes.
Porque no es capaz de llegar a la propiedad de una instancia Antes del predicado tienes que hacer let nombres igual a persona punto nombre y dentro del predicado poner ese let nombre que has definido arriba.
Tienes que poner un tipo estático, ¿sí?
Exacto, un tipo estático, esa es la el nombre exacto. Pues Saravaí Locasca.
No sé, es que eso no es que es que da
la impresión de que han dicho esto vamos a fliparlo, esto va a ser guay, tal, y cuando ya se han metido un camisa a once varas, ya lo han presentado, ya han dicho todo, es cuando han dicho, hostia, pero es que no se puede hacer todo lo que hubiéramos querido.
Es que esto parece que lo han pensado. Que lo han pensado en mayo, lo han presentado en junio y no les ha dado tiempo a
--
Y no
les ha dado tiempo.
Es que parece eso. Creo que el que no lo he metido ahí con Calzador en el último momento.
De hecho la beta siete de de VisionOS dejó de funcionar con su is data. Ponía errores conocido. Sweet data no funciona en visión os SDK. Solución usa la beta seis pero es que arroba observable también estuvo un tiempo sin funcionar en visión o ese. Ahora con la beta ocho han sacado la beta tres de visión o ese y entonces ahora ya sí funciona de nuevo sus data, etcétera, pero ¿sabes?
Te digo, mi miedo, ¿vale? Es el que ya expresó que lo comentamos aquí Paul Hudson, que esto llegue la versión del doce de septiembre y se quede a medio hacer. Ya no lo tengamos bien hasta el año que viene. ¿Sabes
qué se va a pasar? Es que tampoco tiene sentido que en la versión diecisiete punto tres de ellos ya esté arreglado eso. Es que no tiene sentido.
Pues ese es el que de la cuestión, así que sí están las cosas.
Además que que en en, bueno, entiendo, Comprendo. ¿Qué podría decir? Pues esto de las prisas de la versión r c para el los nuevos iPhone. Te lo compro. Porque es cuando este el iPhone hay que sacar hay que, o sea antes de cuando vendamos el primer iPhone pues dos semanas antes hay que tenerlos el sistema operativo para enchufárselo al a los iPhone que vamos a vender.
Te lo compro y manda la fecha en la que este el iPhone no manda cuando esté hecho eso. No se puede retrasar el lanzamiento del iPhone si van a estar un día diez días más tarde porque el
el market que la
versión no estaba terminada, vale, pero qué puñetera necesidad hay de no de repente o no presentarlo en la WDC y sacarlo nuevo cuando sea o ahí sí que si lo sacas de cero mira suit that a partir de la versión diecisiete punto tres es porque no estás o sea no estás cambiando una API te quiero decir la puta es en una versión menor te enchufe ni te amo en cambio de API. Ahí es donde te matan, porque no ha pasado, vale y sobre todo soy yo ahí y yo lo sufrí. Que que cambiasen alguna cosa que te rompéis en una versión menor la aplicación, porque ya se supone que con versiones mayores pues ya lo que hacer todos los desarrolladores. En cuanto sale todo el la release candidate, probar hoy en nuestra aplicación. Primero funciona sin tocar, perfecto.
Si y si hay que tocar, pues ya está, funciona con el nuevo scope, vale, eso perfecto. Pero entre versiones medias pues no tiene mucho sentido, ha pasado, pero bueno, intenta hacerlo a lo mejor posible. Pero es que son cosas nuevas, te quiero decir, o sea, se puede decir, pues no sale y no sale y ya está. O no primero o no la acabo y en la wd se lo presento o directamente ahora digo pues su data se pospone como han hecho es que eso lo han hecho con cosas de del propio sistema, con features que que presentan el sistema han dicho pues esto más, de hecho la aplicación esta que pusieron de que te va reuniendo los momentos y no sé qué, no me acuerdo cómo se llama, momentos probablemente. La dicen que estará disponible más tarde, pues ya está.
¿Qué problema es?
La del diario, la de Journal, no sé qué
es eso. Journal. Un momento. Your no sé dónde ha sacado ese nombre pero joder pueden decir que también pues su data está disponible esto en plan vale te voy a dar te lo voy a poner una versión menos en ellos diecisiete punto tres y ya en ellos dieciocho te voy a hacer cuatro cambios para ya dejarlo pulido. Pero mira, en Newell's diecisiete punto tres puedes ir ya cacharreando con ello en algo que ya está en producción.
Yo lo he pensado igualmente, pero claro, mi pregunta es, ¿y qué hace todo el que ya tenga hecho algo en su dieta? No puede lanzar con con la diecisiete. Dije claro, es un problema. Al final, a
ver, a ver también es verdad Julio qué es, o sea, qué es, son vetas. Y es a lo que te expones. O sea, yo entiendo.
Sí.
Yo sé que entre, o sea, yo si tengo que tomar alguna decir, pues si es una aplicación de un prototipo que estoy haciendo yo, pues si me pues ya está, pero sé que es algo que si lo quita no me va a pasar nada, pero yo en una aplicación de producción en una empresa jamás voy a recomendar hacerlo, o sea me pondría el día que saque la r c, me, o sea, sí que confirmen, que que sale la versión, ya nos ponemos. Pero claro, te hace una putada pues te hace una putada a ti, sabes que has estado todo el verano peleándote con ello Pero también es verdad que es una beta. A veces.
Suiza está ahora mismo funciona. Perfecto. Si se cumplen los siguientes requisitos: uno. Tu aplicación es una app que arranca sin datos. Como notas, como recordatorios, como en fin, todas estas apps de de que son de la propia Apple, si tu app, su estado inicial es no hay datos.
Y ahora yo usando Suip UI voy metiendo datos en la base de datos Primera condición va a funcionar perfecto Segunda condición, que o no tengas back end back end externo, ¿vale? O uses Cloud Kit. ¿De acuerdo? Para que todos los dispositivos estén secuenciados. Es decir, si tú haces una aplicación que funciona como notas que es cien por ciento Suip UI que parte de una base de datos que está vacía y que la sincronización de datos en la nube vas a depender de swift de cloud kit Eso ahora mismo funciona perfecto.
Tu app en consultas va a ir maravillosa. Cuando se estropea en el momento en el que tienes procesos en batch, en el momento en el que tienes procesos en el momento en el que tienes o bien una precarga de datos. Cuando arranca la aplicación o cuando dependes de una API propia no de Apple no de cloud kit entonces si tú dependes de una API propia como es el caso del ejemplo que yo he hecho, que es una API que tiene mil y pico de empleados en una base de datos externa. Y la primera vez que arrancas lo que hace es descargárselo mil empleados y cargarlos en la base de datos y tarda el simulador unos tres segundos o cuatro en hacer esa carga de mil y pico empleados vale tres o cuatro segundos donde la ayuda está congelada e inusable Claro
que no puedes poner un spinners o sea.
No no no no no lo si lo pones se queda parado. El spinner no se mueve vale hubo una beta donde el spiner sí se movía pero en la última ya ni se mueve vale entonces y en el momento en el que hagas procesos en segundo plano bueno puedes llegar a hacer que funcione pero pero muy importante. Puedes llegar a hacer que funcione si eres capaz de montarte el contenedor de trabajo en segundo plano que hostia, ¿vale? Es decir, porque para crearte tu propio contenedor tienes que usar un protocolo, ¿vale? Es decir, en el momento en el que tú creas ese contenedor tienes que conformarte, ¿vale?
A el protocolo model actor. Tienes que crearte un actor. Conformado con el protocolo Moodle Actor. Y este Moodle Actor tiene dos propiedades obligatorias: Moodle Container y model Executor. Los dos de tipo non insulator LED.
¿Vale? Porque están están no aislados del contexto del actor para poder ser usados fuera de la senaway. Luego te creas una propiedad de contexto y sobre el contenedor que tú le envíes definido a partir de la construcción del propio contenedor vale en un model container form donde pongas los arroba model que te vayas a crear de ahí generas el model generas el asocias el model container y luego creas el context de ese model container. Para luego crearte el default sería el model Executor que es lo que cambiaron porque antes se llamaba default model ejecutor y ahora se llama default serial model ejecutor te creas el ejecutador del modelo serializado por defecto sobre el model context y luego ya te pones el model context entonces así puede funcionar. Pero hostia, no es fácil llegar a esta solución.
Para montarte tu propio elemento. Y aun así, como ya te he comentado, cuando haces un task y dentro del task, tienes un trial gate y el trial gate llama una función as since rose y dentro de la since rose estás haciendo operaciones de Fech y de Insert? Todo lo que se hace contra el contexto se hace contra el default serial model ejecutor y no hay otra instancia de ejecutor que no sea ésta y el default serial modem ejecutor está unido al main actor, por lo que todo se va a ejecutar sobre el hilo principal, porque el propio container Cuando tú, al container normal, le quieres sacar, ¿vale? Si tú coges el contenedor, y le quieres sacar el context, el único context que existen los contenedores de su data es el main context, que es de tipo async y que está asociado a el está obligado dentro de su definición a estar ejecutado sobre el arroba main actor.
Algo te digo, con lo fácil que era hacer container.macontext o container.paground.comtext.
Efectivamente eso no es de papel porque no me ponen un container punto background context
Pues además mi
explicación como que no han sido capaces de encontrar una forma de que la interfaz se entere de las actualizaciones en segundo plano y reaccione. Coyopot manda un notification center o algo y luego captúralo o vuelve a usar combined, en fin, no lo sé, es que no, no, no, se me hizo.
Pero es que creo, supongo que no hayan querido tirar de cosas como NOTIFICACION CENTER y hacerlo todo con características de Sweet vale porque digamos que la notificación central final es una API encima y han querido hacerlo solo con componentes de switch, por así decirlo. Pero claro, pues, a lo mejor no han encontrado el componente que querían o tienen el problema del el observador.
Sí, el el el elemento este del with observación tracking. Que traza el acceso a propiedades donde pones el la play y luego lo en change Ya está. Haces wisoft, wisoft observación tracking. Ya está. Nada más por saco.
Por lo ahí. Claro, el problema es
que vi con eso es que solo se ejecutó una vez.
Bueno, sí, esa es otra. Esa es otra gorda que hay ahí efectivamente.
O sea que ahora parasito o sea antes tú cogías con combined por ejemplo cogías un publisher y cada vez que depende del publisher pero normalmente cada vez se, digamos que eso, que se llamaba a una función por simplificarlo muchísimo. ¿Vale? Tú te notificaba los cambios, o te queaban los cambios, o hacías algo ante un cambio siempre. Pero ahora no, ahora con esto tú si te suscribes a los cambios una vez y para casa. Eso es lo que otra cosa que no entendí,
es porque
estoy mirando si
aquí pone trazado de acceso a propiedades y solo tiene dos propiedades. El apply que es el closer que contiene las propiedades que quieres trazar y el onchains que es el closer invocado cuando el valor de una propiedad cambia.
Pero una la primera vez y luego ya está. Porque una de las gracias de combine bueno unas gracias que era también que siempre teniendo o sea que
esto funciona como el como el -- Publisher de URLssession.
Sí, sí, sí, sí. Una vez y ya está. O sea antes, la el rollo de combined es eso que siempre tenías que tener, o sea, el cancelable para trackear pero claro porque siempre tienes que tener una referencia memoria que esté que esté trackeando pero claro aquí como no no sé cómo hacen el trackear quedo, pero no tienen algo persistente.
Eso tendría que tendría que investigarlo un poco más. Porque no sabe -- Es
que lo leí un artículo de de alguien eso que se había encontrado, no sé, pues también quería utilizar el patrón este nuevo para las notificaciones center creo que era o algo así que que que puede llamar todas las veces que quiera. No había manera. No, quería monitorizar eso, quería monitorizar un un uno de los antiguos publisher o sea, de de un Observé Boloddit. Uno de los de las propiedades asignadas como publisher, pues con con Vine podías hacerlo. Tú que te creas la la suscripción a ese publisher y ya está.
Pero aquí no aquel te decía no solo te lo hace una vez y luego tendrías que llamar a una o sea tendrías que volver a suscribirte antes de un cambio te vuelves a suscribir para que
el siguiente cambio te lo te lo vuelva a dar. Sí, lo estoy viendo aquí en una en en una lección de la gente de de OBJC, en una swift talk que tienen aquí, donde dicen que cuando pulsas el botón nada pasa porque la propiedad no está siendo accedida por el closer de apply, la primera vez que pulsas en cambiar nombre, porque están trazando el cambio de nombre, imprime el mensaje de cambio de nombre de la consola y cuando vuelves a pulsar el mensaje no es impreso de nuevo
Sí, es que es de traca,
Sí, efectivamente, dice de callback quets colts when the change y there's the name of their da dice y aquí lo pone and the observation das in fire for any subsecuent changes after this first callback. Si intentamos observar múltiple objeto solo ejecutará una vez el cluser del callback. Claro, debe ser que lo que hace básicamente es recrearlo el Suip UI cada vez que haya un cambio volverá a generar un nuevo with observación track. Eso es que entiendo. Pero en fin, está la cosa, por eso digo que no estamos hablando de para la gente que a lo mejor esté un poco perdida vale no estamos hablando de un cambio de una beta que le falla aquí o le falla allí una tontería.
No, no, son fallos de de arquitectura, son fallos
de de filosofía,
de filosofía de la herramienta, ¿vale? De que no llega a cubrir la necesidad real de un desarrollador.
De hecho, en su día yo fui uno de los que maté muy rápido con Bione, pero a lo mejor no estaba muerto, estaba de parranda. Lo que pasa es que Apple no le ha dado más bola porque se da otras cosas y y porque bueno está como está. O sea combine creo que es algo que nadie le pedía le pedía nada más pero para según qué cosas. Por ejemplo, el tema este que decíamos de notification center con Assynckawait es un poco complicado de interpretar porque al final que hacer un await, un for lo tienes que meter en un for y no es tan rápido de ver porque tú cuando vas pasando por el código ves el for await y crees que se va va a quedar esperado es complicado la verdad. Y ahí para según qué cosas yo sigo de hecho y y hablo de ello con varios desarrolladores que siguen diciendo que no, que bueno que que esta AsyncaWet está muy bien y para muchas cosas, porque por ejemplo, antes hablaste del publisher de URL session, eso sí sí que no tenía todo lo que tenías que montar.
Para hacer una consulta de URL session, que al final no era tanto vale porque precisamente hicieron los mapas de hicieron un operador de de code era como muy al caso de la URL session y te lo pintaban bonito, pero no era como un poco mataremos de casa que haya nosotros, porque lo que decía antes tenías mantener un cancelable del estado que iba a ser una vez y luego lo seguías manteniendo ahí, ¿sabes? No tenía no tenía mucho sentido. Pero bueno no sé Julio cuál es la el resumen de de cómo está el estado de Las metas en el desarrollo.
Pues que está, bueno, Pues que cosas elementales de lo más moderno pues no está terminado al cien por cien en la forma en la que los desarrolladores necesitaríamos que estuviera para que fuera realmente práctico como se ha vendido que lo sería. O sea que es es un poco como a media Fer.
Yo este año puesto el caso, o sea pues viendo cómo está, mi y yo siempre soy el que me lanzo, mi recomendación es esperar hasta las versiones, porque es que no descarto que una diecisiete punto tres arreglé muchas cosas y haga varios cambios de especificación de las API.
Y de hecho una de las cosas que Por ahora parece que no tenemos, pero sí hay atisbos de que pueda haber es el tema de la retrocompatibilidad. Porque las macros son retrocompatibles y de hecho has preview funciona desde a ellos catorce.
Claro es que al final es añadir código, o sea el código que añades no no necesita una versión x, las aplicaciones no necesita una versión x, pues ya está.
De hecho Observable no funciona en iOS catorce porque With Observision Tracket es solo iOS diecisiete. Es Swiss cinco, o sea no es Swiss cinco punto nueve, es iOS diecisiete, o sea forma parte de la SDK del iPhone, ¿vale? Cosa que no debería ser así. Yo entiendo que la ropa Observable debería estar basado en código de swift Si estuviera basado en código de swift cinco punto nueve para que fuera multiplataforma permitiría esa ese tracking más allá de Apple y podría ser retrocompatible hasta ellos catorce, pero como han hecho que el with observación tracking sea parte de la SDK del iPhone, pues entonces y esto podría funcionar en versiones anteriores si utilizan pues el tema de la, bueno, en este caso no haría falta usar el vaguar, este, el ¿Cómo se llama? El arroba BAC Deploy.
No haría falta porque Willow Service Intracking es una API nueva. Único que tendrían que hacer es meterla en la como una dependencia de librería dentro de los ejecutables y ya está. Y funcionaría.
Siempre y cuando lo utilice por detrás, otras cosas de llamadas al sistema que no estén en meses anteriores, porque sí, de hecho no sé cuál, ya como he estado de vacaciones el tiempo me baila un poco pero te lo estuve hablando con con un compañero eso que tampoco es tan sumamente fácil porque muchas veces el problema es que hay llamadas de al sistema o de bajo nivel que sí que no están en versiones anteriores. Eso es ya cuando empezamos, porque hay unas dependencias que se ve, o sea la parte de SWIFT, más o menos se ve las dependencias, pero luego por debajo. Pero bueno, pues está hecho un poco un poco carajal que dicen en mi pueblo,
que usen y en Apple GPT y a ver si se les les arregla el tema.
Y estamos a las puertas, de hecho, el otro día Paul Jasson hablaba de Suip seis, que va a romper todo, claro, sois seis, es eso. Va va a venir aquí a romper todo y
--
Bueno, va mi código.
Yo creo que se espero que que se tendrán que que esperar un poquito porque porque no están las cosas ahora. Para ir tocando.
Básicamente, pues entramos entonces si te parece en el bloque final bloque principal más que el bloque final, donde vamos a hablar de pues bueno algo que está derivado cierta forma de lo que hemos estado comentando, que es el tema de las arquitectura.
Alguna vez has soñado con convertirte en un desarrollador, iOS, creando aplicaciones que millones de personas podrían usar todos los días ¿Te has sentido abrumado por la complejidad y la exigencia del mundo del desarrollo Apple? En Apple Colin Academy, entendemos tus inquietudes y tenemos la solución para ti. Sabemos que convertirse en un desarrollador de años no es un camino fácil ni rápido, requiere dedicación, es esfuerzo y una formación de calidad, pero no te preocupes, estamos aquí para ayudarte a recorrer ese camino hacia la excelencia. Presentamos el Swift developer program dos mil veintitrés, un programa de formación que te enseñará a crear código nativo de calidad para entornos Apple abriendo las puertas de la App Store para tus proyectos. Aprenderás desde lo más básico hasta lo más complejo, con una formación basada en trabajo y experiencia te guiaremos paso a paso con prácticas y ejercicios de todos los niveles para asentar tus conocimientos.
Y no solo eso, también tendrás la oportunidad de crear un proyecto real como el que publicarías en el App Store con el seguimiento de nuestros expertos formadores con años de experiencia en el mercado. Este programa incluye formación en Swift, Swift UI y una introducción a visiónOS. El sistema operativo del nuevo Apple Vision Pro. Así, estarás preparado para enfrentarte a los desafíos actuales y futuros del desarrollo de aplicaciones. Estás listo para iniciar tu camino como developer, el Swift developer Probrand, dos mil veintitrés comienza el dos de octubre y se extiende hasta el treinta de noviembre.
Tendrás clases de lunes jueves de siete de la tarde a once de la noche hora española, un horario perfecto tanto para gente de Europa como de Latinoamérica. Y recuerda que tienes hasta el treinta y uno de enero de dos mil veinticuatro para entregar tu proyecto final, así que si te apuntas, ponte las pilas. Tenemos sólo cuarenta plazas exclusivas para garantizar la calidad de la formación. Visita nuestra web coding.académico s d p veintitrés, y ahí tendrás toda la información y contacto con nosotros para resolver cualquier duda, reserva tu plaza hoy y da el primer paso para convertirte en un exitoso desarrollador de entornos Apple. Con Apple Godín Academy.
Y recuerda,
Binative. A ver.
Terreno pantanoso Julio. Terreno pantanoso esto ha hecho a mucha gente dejar de hablarse. Sí, sí.
Arquitectura o patrón arquitectónico según a quien le preguntes. Básicamente la arquitectura es la forma en la que yo voy a organizar. Mi proyecto a nivel de capas como los obros, ¿vale? ¿Para qué? Pues para conseguir que mi proyecto esté organizado de una manera que sea fácilmente escalable, ¿vale?
Cosa bonita. Qué es la escalabilidad, es la necesidad de ir ampliando tu aplicación, e ir haciendo que cada vez tenga más cosas, ¿vale? Entonces bueno, pues eso sería un poco esa escalabilidad, ¿ok? Yo añadiría Julio a nivel físico,
es decir, cómo los los tour en ficheros, carpetas y demás, pero sobre todo las carreteras hablan de cómo hacerlo a nivel lógico, ¿vale? ¿A qué entidades lógicas quién se encarga de qué? ¿Vale? Es más que lo que decía de dónde lo pongo o dónde dónde lo dejo de poner, que hay muchas arquitectura, ni siquiera se se meten y como dice Julio la clave es esa escalabilidad luego también podíamos decir el testeo vale muchas arquitectura se crean casi por por facilitar el testeo vale y también se busca, pero bueno, yo creo que eso debería ser tan básico, que es la reutilización del código. Es decir, no escribir lo mismo en tres sitios, ¿vale?
Sino que esté suficientemente bien organizado para que si necesitas usar algo que ya está hecho, lo cuente rápidamente y que esté colocado donde donde tiene que estar.
Yo cuando hablo de patrones de arquitectura tengo una diapositiva maravillosa que me encanta, donde pongo varias reglas de oro para las arquitectura. Porque la gente se complica a unos niveles de locura con este tema. Un patrón de arquitectura está hecho para servirnos a nosotros. Nosotros no debemos servir al patrón. Hay gente que hace lo que sea por cumplir ciertas normas y es capaz de básicamente destruir su código o convertirlo en un infierno por tal de cumplir el manual de ABIC de tal arquitectura.
¿Vale?
Déjame que te puntalice una cosa, porque es que justo me he dado una cuenta, cuenta hablando estos días de arquitectura, hay mucha gente, de hecho yo creo que te lo dije a ti. Hay mucha gente que precisamente quiere ceñirse a no arquitectura es decir tener un día burro es que llamo yo para no tener que tomar estas decisiones de cómo estructurar tu código lógicamente, que se encarga de qué, cómo lo divido, sino que mucha gente que se pasó, es una de las claves de la programación, ¿vale? El el tener tu cabeza muy morada y es algo que solo te da la experiencia. ¿Está claro? Tener tu cabeza muy morada para ver ¿cómo lo organizas?
Pues la gente yo creo que quiere ahorrarse ese trabajo y muchas sigue patrones pues para eso para ahorrarse y decir pues esto va aquí, esto va aquí, esto va aquí y y no me planteo lo más mínimo que el esté haciendo una barra basada.
Sí, porque El siguiente punto que tengo en esta diapositiva es: No sobreingenierices tu código. Que es lo siguiente que hace todo el mundo. ¿Qué es sobreingenierizar? Pues básicamente es darle demasiados componentes, demasiados elementos, demasiada división, que cuando tengas que cambiar cualquier cosa, tengas que saltar por siete sitios distintos Jam to definition para llegar a un lugar donde puedas cambiar un dato, es decir, montarte una estructura que es sumamente compleja de controlar simplemente de nuevo por no prevenir el siguiente punto, que es no caigas en las trampas de los tutoriales. Porque yo sigo el tutorial de Paco, que Paco, la arquitectura Paco le viene muy bien, pero a lo mejor a ti no, porque Paco hizo un proyecto x con un tamaño y y con una importancia z y para ese la arquitectura Paco era cojonuda, pero para ti no.
Cuántos Pipers hay por ahí sueltos en aplicaciones de tres pantallas
y eso es que es que no la misma arquitectura o la misma o yo no hago la misma manera, o sea, yo no hago la misma manera una una aplicación según su su sencillez, es decir, hay veces que simplemente se divide o se crea otra entidad o que la que tengo es demasiado gorda y quiero quitar parte y sacarlo a otro sitio. Pero no es que siempre haya que sacarla a otro sitio. No, no, no. De hecho, la propia Apple, en sus ejemplos, muchas veces, mete cosas donde no es, pues porque por no escribir otra clase y hacer todo de que es el licenciado y las propiedades y no sé qué, pues las meten una view o en el caso de eso yo, ahí las meten un view controller y ya está, o sea, porque es que va a ser una pasas a ser cuatro líneas y de la otra manera tienes que hacer diez doce líneas. Que si mañana lo amplío, lo saco, o sea, no pasa nada, una arquitectura es algo una arquitectura como una aplicación es algo vivo.
Sí.
No está en piedra. Entonces una clase y esa clase no está en piedra. De hecho, probablemente si haces una clase y a los dos meses de una aplicación que sigue actualizándose, vuelves a pasar por esa clase, se te ocurren cuatro cosas que recibiste en su día, que antes no tenía sentido que ahora se la tire. Exacto.
A lo cual se añade no copies IP que simplemente sin entender y no sigas ciegamente las estrategias de otros. Busca tu propia solución claro si no entiendes lo que estás copiando y pegando pues no puedes encontrar tu propia solución y aquí viene el la regla de oro don five de framework No te pelees con el framework. Porque cuanta gente se pelea con el framework. ¿O cuántas arquitectura se pelean con el framework? Porque ¿qué es TCA?
A ver, es que eso y la y la gente lo confunde. Es que toda la gente vive muy bien.
Eso todas
las arquitectura valen para Todd, quiero decir saca una arquitectura view modelo del view vale para todo te da igual saca mañana un lenguaje de no sé qué para bueno al ser view tienes que tener un algo algo gráfico. Pero sacas cualquier cosa para programar cualquier lenguaje, para programar cualquier cacharro que tenga una pantalla, y claro, view modelo del view va a funcionar, como no va a funcionar si es una arquitectura. Si hay un libro, o sea un libro no muchos libros sobre eso, como a funcionar en este nuevo lenguaje.
Pues eso es lo primero que tenéis que entender. Aplicar vamos a poner m v v m que sabemos que puede ser aplicado a m v c y a m y a sweet UI vale No se aplica de la misma forma ni es igual. Porque lo estás aplicando sobre el funcionamiento nativo de la librería y Por mucho que tú quieras poner capas Por muchas víboras Por muchas letras Por muchos interactors por muchas mierdas que le quieras meter Una aplicación en UAKID No funciona si no tiene outlet y acciones Y te puedes poner como te dé la gana Pero tiene audlesdiaciones o aquello no funciona Y eso es lo que la gente no termina de enterarse Entonces cuando les dice que que sí, que quieren usar vaiper, vaiper pinky, winky, o cancamusa? Genial. Si para ti es una solución, úsalo.
Pero no dejan de ser Capa sobre capa, sobre capa, sobre capa, sobre capa, sobre capa, de MVC porque Joekee funciona en MVC y no funciona si no es MVC y te reto a que hagas funcionar UI y Kip sin usar MVC porque no lo vas a conseguir. Eso sí es simple. Pero como tú dices, corren sangre a ese respecto.
A ver es que ya te digo lo que de que no que yo creo que hay que o sea el caso de x vamos a poner un ejemplo claro es que se me uve c. Luego por encima puedes hacerlo mejor o peor o puedes inventar sesenta capas. Y luego puedes hacer variaciones, pues bueno, pues yo tenía, se lo tenía apuntado por aquí, a ver, problema de UIKID y de su MVC. Los más view controles, ¿vale? Tenemos este problema, te lo comp, pues nos podemos inventar.
Yo en mi caso me invento una cosa, que le llamo yo así, que le podría, seguro que hay otro que le llamo de otra manera. Pues yo hago managers, models, que me ayudan a hacer esas cosas, lo único que hacen es quito lógica de un sitio y la paso al otro no tiene más o comparto pero es que el otro es el modelo que llamo es el modelo, o sea, me refiero la lo que creo nuevo, digamos, la entidad que creo nueva, que yo le llamo manager, simplemente es coger una parte de una funcionalidad que tiene un view controller y sacará el view controller. Ya está, punto, para organizarlo un poco mejor y y ya está, pero claro, y esto en principio te quita un problema pero luego te empieza a meter otros vale mientras más capas es lo malo que tienen las capas las creas para quitarte un problema y te metes diez. Problemas. Exacto.
Yo en este caso, ¿qué pasa con los mayores? Pues ya tienes que hacer inyección de dependencias. Pues es pues al final andas con single to recordad los single to por favor meterlos en los init, tienes un problema porque cuando haces un link personalizado de view controller ya empiezas a tener jaleos, o sea te quiero decir que es que no no es tan sencillo de venir aquí y le o sea no por meter más capas vas a acabar haciéndolo mejor es que muchas veces que al revés, si, de hecho, si es que si tienes que hacer una aplicación y con MVC logras no caer en los más y view controles estos que estamos comentando. Ole. Ole.
Sé feliz con eso. ¿Lo has conseguido? No necesitas una mierda de que te sirva por encima. Sé feliz, si consigues hacer una aplicación tuya de aquí y solo metes lo que dice MVC, pues perfecto, perfecto.
De hecho, yo como estructura UAKIT vale primero a mí a día de hoy no se me ocurre crear una aplicación en UX si no uso fuentes difusas de datos para tablas o para colecciones, ¿vale? Estamos en el año dos mil veintitrés, está a punto de salir a los diecisiete y las fuentes difusas están disponibles desde a ellos trece. Lo que yo creo que ya ha pasado lo suficiente como para dejar de tonterías. Las fuentes difusas de datos convierten el view controller en un chiste, ¿vale? Porque la el el lo que es la fuente de datos, ¿vale?
Te la llevas fuera y eso además te va a permitir aislar la lógica de los modelos y la lógica incluso de la propia vista te la puedes llevar fuera a una clase aparte. Eso es, ¿vale? Entonces, yo lo primero que hago siempre es crear los datos. Todos los strtruts con los que voy a trabajar. Entonces, yo, Cojo y digo, vale.
Creo el strut, y el strut es, por ejemplo, mis datos de, empleados, mis datos de departamentos, mis datos de proyectos, mis datos de lo que quiera utilizar dentro de la estructura. Todos, strut, sin sin código, perdón sólo datos conformado con codavol y con hashavol de acuerdo en el momento que tengo eso los anos también los hago tipificados a string, también los hago codeutable y también los hago case y table para poder iterar cuando quiero sacar un listado de selección, ¿vale? Entonces cuando ya tengo definidos todos los datos que voy a utilizar que son strugts preparados para trabajar serializadamente con Jason's e insisto no tiene dato ninguno solo tiene los elementos. Y punto, entonces lo que hago es crearme a través de un patrón, ¿Singleton? Lo que yo denomino la persistencia del modelo, que esta persistencia es el componente que se va a encargar de cargar y grabar los datos del modelo, es decir, a persistirlos.
Partimos de la base de una aplicación que no está usando con edad vale esos datos pueden venir de la nube de una api propia o poder estar el local grabados en Jason el local vale Entonces, este modelo de persistencia utiliza vale inyección de dependencias a través de protocolos para poder tener una persistencia sobre datos de test y otra sobre datos en de producción, ¿vale? Si quiero usar Unitesteen, ¿vale? Si no quiero usar Unitesteen, pues no no hace falta, ¿vale? Ok
y Julio dime dime. Te voy a abrir ahí debate. A mí los protocolos me gusta pero no demasiado porque porque también yo a veces hago otra cosa que no utilizando un protocolo utilizó la misma la misma estructura bueno si necesita algún algún estado pues pongo una clase luego del modo en que hace Apple el persistence man, el persistence controller que hace de de corredad, en el cual lo que hace es una Saret al singleton, digamos, de producción, y un preview al single ton pues de las pre views o y luego te haces otro single ton de test no siempre funciona está claro, depende mucho de la de la responsabilidad que tenga la entidad, ¿vale? Hay veces que tienes que recurrir a los protocolos, pero a mí siempre que puedo, utilizo esto, vuelvo y no te evitas pues andar con el protocolo de no sé qué, type, que se le se le se le suele poner, ¿vale? Luego te haces un mo, para los test te haces un mo, no sé que no sé cuántos, que se conformes el protocolo y ya le la haces los que quieres, pero a mí esa esa manera de de hacerlo, de hecho yo no lo voy a estar las previews de si os fijais, si alguno En cuanto, de hecho, creo que cuando creas un proyecto, no sé si es con quince, pero por lo menos es con catorce, el proyecto por defecto, si le has metido corre data, eso te crea un persistence controller, ¿vale?
Que tiene un un single subject y
un punto previo. ¿Vale? Sí, tiene dos estatilet. En ese caso, bueno, es una forma también de usar constructores que devuelvan distintas instancias. Es otra forma completamente.
Total, lo que te hace eso es por si necesitas testear algo o previews de algo que solo cambia el sobre todo previos da igual, porque sí que premios son datos, pero si necesitas testear solo cambiando el inicializador, ¿vale? Porque lo que hace esto es precisamente cada single ton te hace un inicializador distinto, ¿vale? Si ya necesitas testear, si ese, digamos, ese controlador, ese control tiene varias funciones, ¿vale? Eso ya para amoquear las tienes que hacer un protocolo. Incluso yo he hecho protocolos también de se puede hacer de user default si los quieres moquear una vez del contact store CN con TACStore ¿vale?
Que digamos que es la la función principal para acceder a la a la agenda de números del teléfono, pues eso, porque de hecho me surgió el problema y no tardé mucho en entrar con la solución, pero eso lo que te haces es conformas eso al protocolo, a un protocolo que te inventas tú con las funciones precisamente que tiene este contact store, que ya existe en el sistema o este user de folds. Las funciones que tenéis users default que utilizas, las protocolizas dices que users default, conforma ese protocolo y que tu MOOC también para los los test conforme a ese protocolo.
Pues sí, es una es una es una muy buena opción. O sea quiere decir que este modelo de persistencia podríamos usarlo, o bien inyectando un protocolo con distintas instancias una para producción y otra para test o como ha dicho Arturo podíamos tener un final class ¿vale? Porque por favor usar siempre Final Class en todos lados, ¿vale? Porque no vais a usar herencia, lleváis años sin usarla, ¿vale? No, y mirar sobre todo si podéis hacerlo truco.
Primero primero probar si podéis si no tiene un estado y se puede utilizar nuestro y luego ya si no vale si conserváis algún estado que necesitáis ya final class. Exacto. Entonces Si haces la persistencia del modelo, pues la otra opción que no es inyectándote desde protocolo sería con dos estaticlet, con dos inicializadores, que uno sería el shared del inicializador init que es conveniente poner en privado para que así no pueda ser usado para crear la instancia desde fuera y creáis un otro otro staticlet que sería el de preview que usaría el parámetro por defecto del init que en el caso del shed coge los datos de producción en el caso de la preview cogería los datos de prueba, ¿vale? En el caso del persistente controller, de Cordata en Sub UI lo que hace Apple es tener un parámetro que se llama in memory que por defecto es igual a false. Cuando llamas al share y cuando llamas al preview es true.
Y entonces pues así consiguen que que cambie la forma en la que inicializa el contenedor de persistencia hacia defnur, que al final es anularle el almacenamiento, ¿vale? Entonces ese sería el siguiente paso, ¿vale? Crear.
Y te viene Julio. Jercitis. Perdona, y te viene el puritano, de las arquitectura y del código olímpico te dice, me estás metiendo la preview de y al lado del código de producción anda vete por ahí.
Vete para ella abre
porque claro el problema.
Ahí. Que si tú tienes lo di
privado o sea, si haces el link privado, solo puedes hacer este otro este otro staticlet para los previos dentro de la misma definición de producción, entonces claro no te lo puede llevar fuera, si te lo quieres llevar fuera a una, a un fichero que tengas con pilados solo para los test pues tienes una de las dos que podrás hacer es ponerlo como el límite público pero ya no restringes el uso de
--
Bueno, hay una forma de arreglar, ¿vale? A ese, a ese, a esa persona puñetera, le vamos a decir que se cree un fichero de swift dentro de la carpeta preview content. Y ahí ponga una extensión de la clase de la persistencia añadiendo ahí el staticlet del premio. Entonces todo lo que haya en la carpeta de preview content no va a la App Store ni se compila en producción. Y diré bueno pero es que preview content no está en UAKIT bueno sólo hay que venirse a los a lo que es los datos generales, ¿vale?
A la pestaña general de los targets, y abajo del todo tenemos un lugar que pone development assets vale entonces ahí le damos a más en nuestro proyecto de UI Kit le damos una ruta de una carpeta física dentro de nuestro proyecto y automáticamente todo lo que haya en esa carpeta no se va a subir a producción. Por lo que asunto arreglado. Yo es donde meto todos los datos de preview de las del de las de Suic UI, todos los datos de las previos de Suic UI de prueba, lo meto en esta carpeta a través de extensiones y así no amplío tontamente el código de producción pero funciona exactamente igual ¿vale? Y sabes que cuando lo pongas en modo release, la carpeta de preview content no va a incluirse. Por lo que no va a haber en producción nada que sea en ese sentido.
Entonces bueno pues ahí tenemos ¿no? Esa esa opción vale. Entonces cuando ya tengo la persistencia del modelo vale, lo que hago es coger y generarme la lógica del modelo, es decir, toda la lógica del modelo a nivel de los datos que entran, los que carga a través de la persistencia, la inyección o no de la persistencia a partir de la instancia de test o la instancia normal de producción, ¿vale? Y bueno pues intentar poner pues toda esa información dentro de ese de esa lógica del modelo. De esta manera, pues en la lógica del modelo tengo todo lo que sea referente a datos secundarios.
Datos calculados, filtrados, elementos de borrado, elementos de devolución de datos, todo lo que Suponga la información que requiere el view controller está todo en el model logic, por lo que el view controller que es el siguiente paso, lo que tiene es la instancia del share, porque esto también es un singleton. De la lógica del modelo, de forma que todas las preguntas que hacen los Delegados D del view controller, en caso de que los usemos, son contestadas por un método del model lógico que tiene un shear que al ser compartido me permite poner el mismo shear en distintos view controller y que todos estén sincronizados con la misma funcionalidad de forma que puedo obviamente reutilizar ese model logic. De acuerdo y entonces desde ahí tendría ese funcionamiento porque el model logic es el almacén de los datos que van a ser utilizados para mostrarlos a través del view control y a eso adicionalmente que también se puede hacer le puedo crear una persistencia una lógica de la vista donde todo lo que yo vaya a hacer de la vista como por ejemplo el fell for robot como por ejemplo el get score for segway como por ejemplo las imágenes como por ejemplo pues en fin el get search bar vale todo eso son elementos que yo voy devolviendo desde un singleton externo para que el view controller reciba todos esos todos esos elementos de lógica de vista ya construidos y por lo tanto puedo usar los mismos elementos de lógica de vista en distintos view controles.
Esa es la arquetipo que yo uso para Eiquid.
Además ahí te estás quitando los más Sibri controles. Está creando lógica del controlador, está reutilizando código, como hemos visto si utilizas protocolos. Tienes testing al final lo estás cumpliendo y estás, a ver, estás añadiendo capas, bueno no sé, estás añadiendo algunas abstracciones yo le llamaría,
pero vamos. Sí. Exacto. Y entonces así de esa manera pues lo tendríamos resuelto, ¿vale?
Pues muy bien ya ves Julio y yo, nos todavía conservamos nuestra amistad.
Esto probablemente depende que
os he contado más o menos una base, ¿vale? Pero bueno, pero en julio nos ha contado cuatro o cinco cosas que hace diferente, yo os he contado otras cosas que hago diferentes. ¿Cuál está mal, cuál está bien? Pues no lo sé, pues cada uno al final tiene un poco poco su manera, o sea es que la arquitectura tiene que ser la de cada uno, está claro. Pero esto al final también te tienes que amoldar a donde trabajes, a lo mejor estás en un proyecto en el que tienes que hablar con los otros desarrolladores a todo, me ha tocado muchas veces eso por lidiar con alguna arquitectura que no me gustaba, y que tampoco se puede cortar y empezar con la mía, lo tienes que hablar con el equipo, lo tienes que llegar a un consenso, luego depende del proyecto, lo hemos dicho al principio.
No todos los proyectos pueden tener la misma arquitectura y ni ni el mismo proyecto en diferentes momentos tiene que tener la misma los mismos patrones.
Pero al final es la forma de organizar, la forma de organizar y esto que hemos hablado tanto la versión de Arturo como la mía al final es MVC organizado para evitar el problema de los masivo controller y ya está, y no tiene mayor mayor misterio, ¿vale? Entonces de esa manera, pues bueno, consigues organizar este elemento y sigue siendo MVC porque es cómo funciona su, cómo funciona Yoiqui, vale. Y al final insisto, es que cualquier cosa que hagamos aparte de esto cualquier elemento porque seguro que llega alguno me dice no Oscar si ahí es la la vista lógica, entonces es el es el presenter del interactor del Review Ser del Damn. Llámalo como que llama lo pipí y carzan larga me da igual vale lo importante no es el nombre lo importante es que entiendas la organización vale yo en este caso lo llamo de una manera muy clara es decir lo llamo lógica del modelo lógica de la vista modelo persistencia del modelo definición del modelo de datos y view controller
ayer justo hablando con un amigo me dijo que había estado en el desarrador y estuvo haciendo entrevistas dice claro tú le hablas a veces le hablas a alguien de algo que tú das por hecho que le ha llamado toda tu vida de una manera dice el otro se te queda con cara de poker y luego lo sabe perfectamente. Pero de primero dice, ¿qué me estás contando?
Entonces si queréis darle un nombre a esto, podíamos darle un nombre que fuera pues una especie de aproximación arquitectura limpia Klear arquitectos. Que al final es un proceso una organización, ¿no? De de que intenta separar las responsabilidades. Entonces bueno pues eso sucede un poco el tema vale y ahí sería como lo tendríamos montado vale no tiene mayor mayor misterio. Vale.
De hecho, es Uaikit permite una mejor arquitectura y una mayor división. Subió ahí no. Subió ahí es más restringido a la hora de dividir responsabilidades, ¿vale?
Sí, pues ya, mira, pues ya que lo has has mencionado la bicha, Julia. Pues entramos en su UI y si quieres te cuento yo un poco cómo lo ¿Cómo lo trabajo? Básicamente soy UI. La verdad es que proyectos se ha hecho muchas partes, ¿vale? Pero proyectos enteros más allá de algún precio mío pequeño personal.
He hecho muy poco y además se ha evolucionado. Porque claro, yo ahora hace su UI como de el primer día y luego me fui dando cuenta de algunos algunos errores que cometí al principio bon errores o algunas prácticas que no me que luego no me parecieron tan lógicas. Entonces, muchas mucha gente asoció enseguida cuando salió, sobre todo al principio ahora ya empieza a haber más controversia que su yoga era MVM. Pero he de aquí que yo no he visto ningún ejemplo de Apple en el que nada se llame PQ Mother. No lo he visto todavía.
Entonces para mí es algo quizás basado en m v v m, pero no es exactamente. Entonces fijándome al principio yo empecé con él siempre pues cada cada vista tenía su su view model, pero me me pasaba un problema que cuando quería algo que orquestase todo eso vale pues ya me tenía que ir a otra digamos a un modelo vale por llamarle de alguna manera o como el por ejemplo el Princess es control este que llamó, y tenía cuál era el problema de esto, la inyección de dependencias y sobre todo que lo bueno de su UI es el el binding que tiene, ¿vale? Él cambia algo aquí y y se cambia en el otro lado. Y con esto me lo estaba cargando, porque si cada view tiene su view módem, Luego esos view modelos tengo que comunicar pero claro ya no tengo ese binding ¿vale? Sino que me tengo que crear yo pues con notificaciones ¿vale?
Ya me tengo que buscar cargue un poco las gastar y entonces dije espérate, y si intento hacer que unos modelos en b de view model, digamos ligados a cada vista ¿vale? Y de esta manera sí que he visto que se me aligeraba bastante. Pero, ¿cuál es el problema? Que toda esa lógica que yo antes metía en el view model ¿La tengo que meter en algún sitio? ¿Dónde la meto?
Pues en el view, en la view vale, porque es que estas views las llamamos views pero en el, no son las views de BBC, ¿vale? En este caso soy UI. Y ¿qué pasa? Pues que vuelvo a tener el problema de los lo que antes se llama Massivview controller ahora se llama Massivview ¿vale? Para esto pues pues muchas veces me hago digamos, pues la misma me hago con extensiones de estas vistas, me hago distintos ficheros para dividirlo, también intento meter más lógica en estos models, sobre todo si es compartida, luego intento mucho hacer este extensiones de las clases que me aligeren, yo que sé, pues utilizo mucho los modificadores, estos de estilo de botones, lo de de estilo de de las labels, ¿vale?
Intentó como pasar todo lo que pueda, ¿vale? Para quitármelo de ahí. Pero no hay algo tan claro como sacarlo a otro sitio, porque si no sacas otro sitio, tienes que optar y es un poco rollo, ¿vale? Pero está más o menos por hacer resumen ha sido mi evolución. Empecé con MVVM muy claro, ¿vale?
Y me pasé a este y es que un día leí cómo cómo podías llamar esta arquitectura pero bueno lo que dice es que estos view model, en lugar de hacerlos específicos de cada vista, hice algo más general. Que nos llamo model, vale, de hecho Apple utiliza la esta misma nomenclatura, les llamo model, me sirve para varias y así aprovecho que tengo ese bandit. Y luego, como decía, pues intento aligerar la lógica de los viewpack, no se se hagan enormes, pues eso, o dividiéndolo en ficheros para organizarlo mejor, aunque si sigan siendo grandes los tengo mejor organizados, o como decía pues eso utilizando extensiones utilizando creando propiedades y los propios componentes de Sugi UI, ¿vale? Ya me busco un poco las vueltas, pero más o menos ese sería a grandes rasgos la arquitectura o el patrón que yo sigo en su UI.
Has tocado un tema muy interesante.
Aquí a lo mejor Julio y yo dejamos de ser amigos.
A ver. Solamente ha habido un vídeo que ahora mismo sería incapaz de decirte cuál es Pero lo he visto, ¿vale? He visto cosas que no creerías. ¿Nabas más allá de Orión? Y un Air Power.
Un Air Power. Más allá de la puerta de Tanhauser. Y he visto un vídeo donde Apple decía MVM. Vale. Pero es obvio y de hecho yo lo pongo en mis formaciones, que lo que apelase no es porque cada versión de MVM está adaptada al framework para el que da servicio y MVVM para Apple no es el MVVM de el original que fue creado para Windows presentation Foundation, ¿vale?
Foundation, perdón, ¿de acuerdo? Entonces, ¿Qué es MVVM o lo que podemos llamar MVVM? Por llamarlo de alguna forma, porque de hecho incluso ahora ha cambiado en años diecisiete. Por lo que, en fin, en años diecisiete ya no funciona exactamente igual no es que no funciona exactamente igual es que añade una posibilidad que ahora que antes no tenía, que es una de las cosas que vamos a comentar de los problemas que tiene uno u otro, ¿vale? Entonces, Lo que Apple intenta es resolver el problema de la UI declarativa, una UI que no es mutable pero que tiene que declarar que cosas van a ser mutables para reaccionar al cambio de esa mutabilidad.
Eso es lo que intenta. Por lo tanto, lo que busca Apple es una arquitectura que resuelva un problema de una API reactiva a través del concepto del estado. El estado es una propiedad que cuando cambia provoca que la interfaz refleje, ya está, y eso es lo que Apple intenta. Entonces, en base a eso, yo lo que hago con swift UI hasta años dieciseis es igual me creo la capa de modelo los strutch con la capa de modelo, con los datos que voy a manejar. Y en este caso, estos datos ya no son sólo Codafol y Hazleball, también son identifyable.
Porque necesitamos el identifyable para enumerar los datos en una vista. Sino no puedes hacer un foreach. Vale. Por lo que tengo un modelo con strutch Solo con los datos que es Co-Dable Identi-Falleable y Hasseable. Co-Dable, para trabajar con serialización Jason, identifievole para enumerar en una vista con Forest, un array de este modelo y Jashable para poder usarlo en el maestro detalle que se construye con Navigation Stack a partir de años dieciseis.
¿Vale? Si no, no es necesario que sea hashed. ¿Ok? A partir de ahí vuelvo a repetir la estructura que ya te comenté de UAKIT es decir me creo un protocolo de persistencia, que aquí, según el patrón de Clean architecture, sería el interactor. El interactor es el que se encarga de cargar los datos desde su fuente de datos cargar y grabar enviar o recibir de una API o cargar y grabar el local ¿vale?
Lo que sea, o las dos cosas, ¿de acuerdo? Entonces, aquí crearía un protocolo de interactor Que podría permitirme, que podría no que me permite inyectar a la instancia clase Interactor. De la persistencia, producción y testing preview. Porque yo sí creo datos de preview para SuipJue. ¿De acuerdo?
Cosa que por ejemplo por hasson pasa olímpicamente de ello porque crear datos de preview para twitch UI lleva su trabajito ¿vale? Luego es muy práctico, pero te lo tienes que currar, sobre todo si es un modelo que es importante. Entonces yo
engancho, mira, aquí te voy a te voy a hacer un un contar una pequeña cosa que -- Eso
también se puede hacer, como tú has comentado antes, con los dos static, ¿vale? Con el staticlet share y con el staticlet preview igual que hace Apple con Cordata en Subi.
Yo muchas veces cojo para por ejemplo los servicios web pues cojo llamo al servicio, copió el JSON de, bueno el JSON de la respuesta, lo meto en estas en este en esta carpeta, ¿vale? Que luego no no va compilada y luego me creo unas una extensión digamos bueno en el protocolo que tengo de los modelos con los que decodificó los datos del servidor me cree una extensión que me lo recupera, ¿vale? Por nombrecillo, bueno, o hay algún truquillo, lo he hecho de varias maneras, o le cree una propiedad estática con un nombrecillo que luego es el que le doy al JSON, ¿vale? Y así de esa manera los puedo importar súper rápido. Sí
sí sí algo parecido vale o sea al final yo con el tema de los tests lo que hago es igual bajo JSON el local lo meto en preview content y lo que hago es que la función de carga pues siempre, o sea, si si lee de una API esa since rose, aunque cargue el local, ¿vale? Y si no cae y si no le dé una API pues entonces será solo Frozen y ya está. Lo que sí hago siempre es que todas las funciones de carga y grabación de la persistencia son frows ¿Para qué? Para propagar los errores hacia el view model de forma que me permita mostrar en la interfaz el error
vale eso es, es otra cosa del de donde, o sea, que si puedo, o sea, propongo el error todo lo que pueda para que sea la última capa el que Exacto, que la ONG y sobre todo si precisamente si son, o sea, si son errores que la interfaz da igual, pues bueno, lo puedes dejar antes y ya obras en consecuencia. Pero claro, esos errores que necesitan mostrar hay que hay que propagarlo así, pues, como dice Julio, con los con los singleton, me hago un singleton de Steview model, de la de la preview, ¿vale? Y lo que hago es, lo inicializo, cojo, decodificó el JSON este con la respuesta que lo que que es lo primero que voy a hacer, porque voy a llamarla, sabes que la llamo al inicializar pero me cojo el servidor, se lo se lo meto yo del JSON este que tengo, entonces ya cuando la preview de de su issue ya directamente me muestra la preview con datos. De hecho muchas veces yo me hago una que es preview y otra preview en ti vale para ver para estimular el estado de que tengo datos y el estado de que no tengo datos para ver si la pantalla que he puesto del place hold verde no hay datos vale funciona y
funciona. Sí, es una opción interesante. Entonces una vez tengo la clase del interactor que es la asistencia del modelo que es el que se encarga de los datos de producción y de testing y que trabaja además como ya hemos visto con un patrón single ton Entonces y aquí está la pega de SWIFT hasta iOS dieciseis, género el view model ¿Por qué género el view model y no creo como en UIKit? Una un model lógico que a su vez esté unido a un view controller en este caso a un view model pues básicamente porque en SWI necesitas que el almacén de los datos sea publish dentro de un observable objeto para que la interfaz reaccione los cambios de la misma. Por lo que eso te impide llevarte el almacén de los datos a un sitio distinto.
Y alguno diría, no, pero puedes hacerlo. Sí. Puedes hacerlo. Puedes hacerlo a través de combine utilizando un sujeto de paso, un pass through subject, ¿vale? Si usas un pastly subject que reaccione y envíe de un model logic hacia un view model, el cambio del almacén puedes hacer que el bio model propague ese cambio del almacén a través del publish directamente sobre la interfaz.
Pero se queda muy feo el código. Vale. O sea te cargas la belleza de Surview. Y tampoco puedes poner el model lógico fuera y enviar y recibir de manera constante el array con el almacén de datos porque no tiene puto sentido vale por lo que al final hasta ellos dieciseis El problema es que dentro del bi-model vas a tener toda la lógica del modelo. Por lo que al final lo que Apple recomienda es que tengas distintos viewmodels por cada fuente de datos principal que tengas en la app.
Que lo comentaba yo que le llama model. En lugar de llamarle view model, le llama model y en lugar de asociarlo a una vista lo asocia al modelo.
Exacto, entonces eso es una instancia, eso es una clase observable object que va instancia dada en el strug de turno como una arroba observador bien y a partir de ahí lo usas. O si lo que quieres hacer es usarlo, con fin, con los cambios de, con los cambios de, o sea, propagando a través del stake up yet, desde el principio de la app, ¿vale? Pues haría lo mismo pero sería un empirón menuject, ¿vale? Y está. Eso sería su UI.
Pero en años diecisiete la cosa cambia. Porque ahora tenemos Observable Y Observable Si funciona a distintos niveles Por lo que ahora, en años diecisiete, sí puedes tener un model lógico. Y ese model logic va a ser el almacén de los datos. De forma que tienes la misma estructura que acabo de contar, Model Stroot de tipo Codeable Identity Fire y Cashable Protocolo Interactor Interactor de persistencia clase producción y testing en modo Singleton y este engancha con una clase de tipo observable que es el model logic y almacenamiento. Almacén de datos con los que vamos a trabajar.
Por lo que meto dentro de cada model logic toda la lógica de cada una de las fuentes de datos con su almacén Esto me permitiría usando el patrón staticlet que ha dicho antes, Arturo, hacer que el bio model, el nuevo bio model, que ya no es observable object, ahora es también observable, por lo que tenemos un model logic que es arroba observable y un view model que también es arroba observable. Y al arroba observable del view model le inyecto la dependencia de los distintos model logics que vaya a utilizar de forma que el view crea la instancia stade del view model. Clase observable y a la hora de enumerar solo tengo que pasar por el model logic, que es decir haría view model punto model logic punto almacén y eso va a reaccionar y me va a permitir aislar en distintos niveles la estructura. Eso, a partir de años diecisiete.
Pues es que al final aquí, de hecho, aquí Sí que coincidimos plenamente porque era el problema que exponía yo que que el MVVM tradicional tenía el problema antes de ellos dieciseis de que la magia esta de los bandings, de que cambias algo del viewmobile y se cambia si tienes luego un model por encima con los datos, con el almacén de los datos, te tienes que sacar que buscar la las, o sea que buscar la vida para comunicar ese view model, ese model de manera chula, y por eso decía que yo últimamente tendía a absorber ese model vale y ligar cada model a los datos vale y poder utilizarlo en varios en varias vistas eliminando el view model intermedio, pero como cuentas en Newell's Diecisiete precisamente el arroba Observoable quita eso y te permite separar y tener las dos instancias, es decir tener un view modem que entre otras cosas te aligera la view para no tener los mashi viewe de los que hablaba que que se cometen en un problema y por otro te permite comunicar de manera elegante el view model con el model.
Exacto. Así que bueno, pues esto es lo que hemos ganado, ¿vale? Si ahora consiguiéramos sobre esta estructura que los el model fuera también observable? Lo que ganaríamos es que, en una inyección maestro-detalle, Yo inyectaría la instancia del almacén de datos del model login que pasa a través del biomodel y que llega a la vista Como un Bindavo en el detalle. Por lo que al ser inyectado como un Bindavo, yo podría desde el detalle directamente mandarle a los test field el valor del dólar instancia punto propiedad y que se editaran directamente desde la vista detalle pasando por la view pasando por el view model hacia el almacén de datos y que se actualizará solo
Vale que el problema es.
Ya lo has entendido ¿verdad?
Claro claro claro claro además de ser feo claro el problema es la vuelta. O sea, la ida está resuelta, o sea, esto te resuelve la comunicación de bajada, pero no la de su vida. Esto es. Efectivamente, no tengo que conservar el byte ni nada hacia arriba, ¿vale? Entonces
pues hay que jugar ahí un poco con el tema, ¿vale? Y bueno pues ver cómo se cómo se haría.
Y bueno Julio yo creo que la verdad es que coincidimos bastante, No. Tenía miedo, digo, estará en peligro nuestra amistad, donde tenemos con la arquitectura, ¿no? A ver si no se refleja los oyentes y mañana -- No, mañana dices a veces.
Solamente te habría negado el saludo si usaste fea. Para que se pregunte qué es TCA, TCA básicamente es destruir su UI. De hecho, TCA lo que hace en iOS diecisiete es cambiar completamente, o sea que sepáis que si estáis usando TCA los creadores han hecho cambios de des compilación en la nueva versión de TCA porque han reestructurado todo TCA aprovechando precisamente el observable, ¿vale? Porque ahora puedes, como hemos comentado, pasar las instancias de un observable al otro y que las vistas reaccionen retroactivamente en en el árbol de jerarquía de esos observables, ¿vale? Entonces eso lo han aplicado ellos y por lo tanto TCA en años diecisiete va a ser totalmente distinto a como es en años dieciséis.
Y vais a tener que cambiarlo todo si queréis adoptarlo. Obviamente. ¿Qué es TCA? TCA es aplicar un patrón, o sea, es aplicar el funcionamiento de redux de Java Script de Rignative en Suge UI. O sea, es montar la estructura organizativa de Redux dentro de Suge UI.
Y para eso lo que hacen es, insisto, destruir la belleza de Suip UI porque lo que hacen básicamente es crear todo tipo de instancias que van inyectadas desde la vista y la vista tiene código de instancia de los modelos y luego el tal él no sé qué. O sea, es es un dolor de de de de vista, os invito a que lo busquéis, ¿vale? Os invito a que lo busquéis y lo y lo y lo veáis por vosotros mismos, ¿vale? Me parece un auténtico espanto vale porque al final una de las cosas que yo comento en este en este en este elemento vale que he comentado antes como reglas de oro vale una de ellas es el código debe ser entendible y simple en un vistazo. Si tu ves tu código en un vistazo y no eres capaz de entenderlo, algo estás haciendo mal.
Es así de simple.
Pues sí, es que al final la cosa que hacen todas las secretturas es te digo meter un o sea intentar solucionar un problema pero muchas veces meten más problemas de los que solucionan y de hecho aquí lo cuando estamos contando las cosas, ¿cómo hacemos nosotros las cosas? Hemos puesto también sobre la mesa, algunas veces mira hago esto pero también puede tener puede tener esta esta serie de problemas.
¿A cuántas?
Yo creo
que algo hapañado, ¿no?
Pues sí.
Sí, sí, sí. Yo entiendo que la parte de arquitectura en podcasts puede ser algo de encita, ¿vale? Pero bueno, si tenéis interés en el tema, estar atentos a nuestras redes, ¿vale? ¿Cuáles son nuestras redes? Pues, ¿cuáles son tus redes, Arturo?
La mía es Joe, estoy un poco oxidado en julio.
No, grababa. La tienes ahí abajo. Quita.
En todo, en todo el verano, donde más estoy es en x.
En x.
Es la es la primera vez que estamos, que hablábamos en x, no sé. Es arroba Arturo Rivas A luego también podéis encontrar más todo como arroba punto cloud, ¿vale? Que está todo el mundo en el punto social, pero yo estoy en el punto cloud, pero de todas maneras si solo os acordáis de mi nombre es Arturo Rivas punto com y allí estar mi currículum y tal y y y las redes donde podéis encontrarme.
Y a mí pues podéis encontrarme en equis, mastodon, blue Sky, también estamos, ¿no?
Sí, pero Julio hay eco allí, ahí se inscrita bien, Pero solo escribe Stewart a Barredo a Mixio y solo en el timeline solo está él.
Pues en todos lados me tenéis como arroba jcf monos las dos redes donde estoy más activo son en x, ¿vale? Jcf1 off y en LinkedIn. ¿Vale? El linkkin.cominjfmunoff, ¿vale? Y en el post podéis seguirnos.
Entonces, y luego si queréis seguir a Café Suite, que normalmente publicamos cosas aparte de él, toda la información del podcast, etcétera, también publicamos noticias y cosas así recursos y cosas chula que os pueden servir y lo tenéis todo en x, en arroba café swift con dos jefes café, ¿vale? Y ahí, ¿vale? Podréis estar atentos porque anunciaremos en breve una master class, que haremos en el canal de twitch, de Applecoding, que es donde normalmente grabamos en directo este podcast, donde haré una master class de arquitectura de suite UI en iOS diecisiete con observable. Los vamos a enseñar de una manera totalmente gratuita cómo crear una arquitectura nativa siguiendo el nuevo patrón observable de ellos diecisiete con Swiss UI en scope quince, ¿vale? La anunciaremos en breve.
Así que pues eso, básicamente ese es el tema, ¿vale? Estar atentos a nuestras redes, que ahí estaremos informando de todo, ¿vale? Y ya sabéis que tenéis otros muchos episodios en Cuanda, ¿vale? Cuanda.com barra café con dos f sweet y también podéis contactarnos por correos y queréis contarnos cualquier cosa en café swift café con docefgmail.com ¿Y poco más?
¿Y poco más? Sí. Iba a decir que que para ser la vuelta del verano nos ha quedado bastante bastante redondo. La verdad. Yo perdonar por lo de las redes, me quedé totalmente blanco, Es de la vuelta a la marcha, pero bueno, la verdad es que nos ha quedado un un capítulo muy muy completo y yo creo que hemos, a ver, muy, este siempre lo decimos pero yo creo este más ha sido sobre todo la última parte de las escrituras.
De cafetera pero algo que queríamos, llevamos tiempo queriendo traerlo porque siempre es un tema muy muy discutido en el que está claro que que prácticamente casi nadie tiene la misma opinión. Va a ser muy enfrentadas y gente que lo defiende lo suyo a capa de espada, pero bueno, os hemos contado pues que al final más que nada más que una arquitectura fija es coger la arquitectura recomendada de cada framework y darle tus, o sea, y darle tu fine tooning como a las seas, ¿vale? Para que para que se adapte a ti y a tu manera de trabajar, es siempre un poco de mesa abierta, o sea nada tiene que ser ahí meter las cosas con calzador porque eso nunca
no no fight de freightway que decía que decía vulgares. Y recordad que el próximo día doce de septiembre a las siete de la tarde en realidad seis y media hora española que serán las once y media de la mañana hora en México DF que es bueno pues media hora antes del evento de Apple estaremos en directo Arturo y yo en el canal de twitch de Apple coding twitch punto tv papel coding con algún compañero barra compañera más, acompañándonos para hacer la cobertura de la presentación de los iPhones así que os invitamos a estar con nosotros ese día y bueno pues no es lo mismo ver pues a dos developers contando sus locuras y explicando desde el punto de vista del desarrollo todo esto vale así que pues ahí estaría un poco el té. Así que, poco más, muchísimas gracias por estar ahí. No oímos pronto. Si Jobs quiere y hasta entonces no olvidéis jugar con el código Ah, hasta pronto.
Chau.