Creé una aplicación para IOS en 3 días literalmente sin conocimientos previos de Swift

la aplicación Brush Tracker en 3 días sin experiencia previa con Swift, el principal lenguaje de programación para el desarrollo de iOS. Aunque tengo una aplicación completamente funcional en la App Store, todavía tengo muy pocos conocimientos de Swift porque utilicé “vibe coding” para desarrollar esta aplicación.

En este artículo, explicaré el proceso, las herramientas de inteligencia artificial que utilicé y compartiré algunos de mis aprendizajes y conocimientos.

Cualquier cosa que sea una alternativa adorable

Anteriormente usé Lovable para desarrollar aplicaciones web, pero no parece ser una opción para el desarrollo de aplicaciones móviles, al menos por ahora.

Existen alternativas a Lovable para el desarrollo de aplicaciones. Recientemente encontré una herramienta llamada Anything y como había tenido una experiencia tan buena con Lovable, decidí probarla para desarrollar mi aplicación. Al principio, pareció funcionar bien, pero la experiencia general no fue tan eficiente como esperaba.

La parte más difícil fue no poder probar mis cambios, correcciones y mejoras de inmediato. Anything tiene una interfaz de usuario incorporada para realizar pruebas, pero la experiencia no fue muy fluida. También te indica que pruebes el código a través de la aplicación Expo, pero a mí tampoco me funcionó bien.

Debo mencionar que no tenía ninguna experiencia previa en desarrollo de aplicaciones. Para los desarrolladores o cualquier persona con experiencia en codificación, Anything probablemente podría ser una herramienta más productiva que para mí.

Exporté el código de Anything e intenté probarlo en Xcode en mi Mac, pero obtuve muchos errores y no pude hacerlo funcionar. Entonces decidí usar una alternativa. El cursor parecía la elección obvia.

Cursor

He oído cosas muy buenas sobre Cursor de muchos amigos que lo utilizan activamente. Quería intentarlo yo mismo.

Utilicé el mismo mensaje en Cursor y le pedí que creara la aplicación. Luego creé un proyecto XCode con las carpetas y archivos generados por Cursor. Inicié el simulador en XCode y funcionó en el primer intento.

El objetivo de Brush Tracker es ayudarle a mantenerse constante en su cepillado de dientes diario. Le otorga una puntuación de limpieza que comienza en 100%. Si te saltas un día, la puntuación baja y tus dientes en la aplicación empiezan a verse un poco amarillentos para igualar la puntuación de limpieza.

Nota: Todas las imágenes utilizadas en este artículo incluyen capturas de pantalla de mi aplicación, Brush Tracker.

La primera versión sólo tenía la característica principal de la aplicación. Creo que esta es la forma más eficaz de crear productos con herramientas basadas en IA. Obtenga la primera versión en funcionamiento antes de agregar funciones.

Para probar la función principal de la aplicación en el simulador, tuve que cambiar la fecha del simulador sin completar el “cepillado de hoy” para comprobar si la puntuación de limpieza bajaría y las visualizaciones de los dientes se actualizarían como se esperaba.

El cursor sugirió cambiar la fecha en el simulador XCode pero el simulador ya no tiene la configuración de fecha y hora. Las versiones anteriores del simulador XCode tenían esta configuración, pero ya no.

Una solución alternativa fue cambiar la fecha en mi Mac. De esta manera, la fecha en el simulador también cambió y pude probar la función.

Una cosa que noté fue que cuando cambié la fecha en mi Mac, Cursor no vio mi cuenta y no funcionó. Volvió a la normalidad cuando cambié la fecha a automática.

Función de temporizador

Un temporizador de cepillado incorporado pareció una gran adición a Brush Tracker. Los usuarios pueden simplemente marcar una sesión de cepillado como finalizada o utilizar el cronómetro mientras se cepillan.

Me tomó algunos intentos lograr que esta función funcionara como lo imaginaba. Puedes simplemente decirle a Cursor que agregue una función, pero funciona mucho mejor cuando modificas el mensaje y explicas exactamente lo que quieres. Una vez que das instrucciones claras, Cursor suele hacer un gran trabajo.

Función de recompensa

Quería añadir una motivación extra cuando el usuario completa el cepillado diario. Después de completar las sesiones, pueden tocar “Obtenga su recompensa diaria” y ver una breve cita motivadora. Es un pequeño toque pero un bonito recordatorio para la salud dental.

De hecho, puedes aprender mientras codificas por vibración

El cursor no solo escribe el código sino que también te ayuda a aprender. Cuando intenté agregar la función de recompensa, la implementación no fue correcta al principio. No estaba funcionando correctamente.

Le describí el problema a Cursor y me explicó qué estaba causando el problema y cómo solucionarlo. Aquí hay dos ejemplos de cómo Cursor puede ayudarlo a aprender a lo largo del camino:

El problema es que recompensaQuote está vacío en el primer toque porque handleRewardTap() lo establece, pero la hoja se presenta inmediatamente. Necesito asegurarme de que la cotización esté establecida antes de mostrar la hoja.

¡Se solucionó el problema! El problema era que showReward = true se estaba configurando inmediatamente después de AwardQuote, pero la presentación de la hoja de SwiftUI puede ocurrir antes de que la actualización del estado se procese por completo.

Utilice el cursor de forma más eficiente

El cursor es una gran herramienta, pero hay algunas formas de hacerlo más eficiente.

Supongamos que el código falla o no se ejecuta correctamente. Si conoce la parte problemática, resalte esa sección y agréguela al chat. Definitivamente hace que a Cursor le resulte más fácil solucionar el problema.

En Brush Tracker, tuve un problema al configurar las notificaciones. Definí el problema y le pedí a Cursor que lo solucionara. Cursor me dijo que estaba solucionado pero el problema aún existía. Luego, a partir de los cambios de código encontré dónde estaba ocurriendo el problema y agregué esa parte al chat.

El cursor lo solucionó en el siguiente intento: el problema es que onTapGesture se aplica al selector, pero en SwiftUI, los selectores segmentados no siempre responden bien a los gestos de toque porque tienen su propio manejo interno de gestos. El modificador onChange solo se activa cuando la selección realmente cambia, no cuando se toca el mismo valor.

Otra cosa que vale la pena mencionar es el porcentaje de “contexto utilizado” en Cursor. Captura automáticamente el contexto relevante de su código base, por lo que no tiene que decirle qué archivos mirar. Pero su historial de chat también se incluye en ese contexto y, a veces, contiene problemas antiguos o código irrelevante.

Ese desorden adicional puede aumentar el uso de tokens o hacer que Cursor sea menos eficiente. Cuando el porcentaje de contexto utilizado aumenta, borro el historial de chat.

Distribuir su aplicación en la App Store

Una vez que haya terminado de probar su aplicación usando el simulador o un dispositivo físico (por ejemplo, su propio iPhone), es hora de distribuir su aplicación en la App Store para que otros puedan ver (y, con suerte, usar) su aplicación.

No es un proceso complicado pero hay muchos detalles, que pueden llevar mucho tiempo, especialmente cuando lo haces por primera vez. Encontré un vídeo en YouTube que explica claramente todo el proceso paso a paso.

Después de completar todos los pasos, envié mi aplicación para su revisión. Una vez aprobado, recibí un correo electrónico de App Store Connect informándome que estaba listo para su distribución.

Me gustaría señalar que no tengo ninguna afiliación con ninguna de las herramientas de inteligencia artificial mencionadas en este artículo.

¡Gracias por leer! Puedes consultar Brush Tracker en la App Store. Me encantaría saber de usted si lo prueba o tiene algún comentario.