Xcode 13: Pull Request, Vim, Column Breakpoints, Autocompletado...
Novedades y mejoras en Xcode 13

Xcode 13: Pull Request, Vim, Column Breakpoints, Autocompletado...

Xcode 13 ya está disponible para descargar. Han introducido: Xcode Vim, Xcode Pull Request, Xcode Cloud, Rediseño, Mejoras en el testing, mejoras al autocompletar Swift, etc

SwiftBeta
Mejoras en Xcode 13

Desde la WWDC21 ya tenemos Xcode 13 disponible para descargar. Esta nueva versión incluye Swift 5.5 y los SDKs para iOS 15, iPadOS 15, macOS Monterey, tvOS 15 y watchOS 8.

Si queréis descargar esta versión beta os dejo un video de mi canal donde explico cómo hacerlo.

En el post de hoy vamos a crear un proyecto con Xcode 13 y vamos a ver varios cambios, uno de ellos es el rediseño.

XCODE

Nuevos iconos

Nuevos iconos para representar los ficheros con extensiones .swift que por cierto han ocultado para que no se vea la extensión (es decir, ya no se ve el .swift) y queda mucho más limpio.

Nuevos iconos para representar ficheros en Xcode 13

También vemos nuevos iconos para representar los Assets.

Info.plist

Si te fijas no tenemos el típico fichero de Info.plist, pero esto no significa que no exista, si clickamos en el target podemos verlo.

Accede al Info.plist seleccionando el Target

Git

Al lado del button para compilar nuestra app tenemos muy visible la current branch en la que estamos trabajando. Al poner esta información aquí, Apple supongo que quiere que los developers le prestemos más atención.
Si clickamos en este nuevo button podemos ver nuestras ramas y crear un Pull Request.

Crear Pull Request en Xcode 13

XCODE CLOUD

Tenemos una nueva opción en el menu para acceder a Xcode Cloud (que personalmente es una de las cosas que más esperaba en la WWDC).
Para quien no lo sepa con Xcode Cloud ahora tenemos continuous integration y delivery (hay empresas que usan Bitrise, Travis, Jenkins, etc). Con Xcode Cloud podemos crear distintos workflows customizados para ejecutar nuestros propios scripts pero ahora mismo, la versión de Xcode que estoy probando es la Beta y también la opción de Xcode Cloud y por eso supongo que recibo este error cuando intento acceder.
Pero no os preocupéis ya que en cuanto tenga acceso tendremos un video exclusivamente hablando de Xcode Cloud.


SOURCE CODE

Ahora podemos crear, revisar y mergear Pull Requests desde Xcode. Lo único que necesitamos es una cuenta en Github o Bitbucket. Para añadirla es tan simple como ir al Xcode -> Preferences -> Accounts y seleccionamos Github (Aquí nos pedirá crear un token que debemos hacerlo desde Github).

He podido crear una Pull Request sin problemas desde Xcode, añadir un título y descripción. Me he logueado con otro user para hacer code review y sugerir cambios pero no me aparece en la información dentro de Xcode. Seguro que es por ser una Beta, pero en los videos de la WWDC vimos como esa información debería aparecer.

Algo nuevo en esta versión Xcode es un nuevo icono para hacer Code Review. Es el de las flechas, cuando lo habilitamos se muestra los cambios introducidos desde el último commit.

Button para activar Core Review en Xcode 13


También, cuando este button está habilitado vemos como podemos ver los últimos cambios podemos comparar cambios y podemos comparar con otras ramas. Para ello aparece una sección en la parte inferior de Xcode.

Compara el código con otros commits


También podéis ver de un simple vistazo todos los cambios con la opción nueva que han puesto en el "Source Control Navigator". Hay un nuevo button llamado "Changes" para ver todos los cambios que hemos introducido desde nuestro último commit.

Mostrar todos los cambios (Source Control) en Xcode 13

EDITOR

En general han mejorado el autoacompletar en Swift. Mucho más rápido y robusto. Vamos a ver algunos ejemplos:

AUTOIMPORT

Imagina que estas programando uana nueva vista y añades una clase pero no has importado el framework. Automáticamente te sale una opción para importar el framework.

Autoimportar Frameworks en Xcode 13

En este caso quiero crear una view en UIKit y al añadir UIView en una clase completamente nueva me dice que si escojo esa opción (UIView) importará el framework UIKit. Lo mismo pasa si quiero crear una vista con View en SwiftUI y no he importado el Framework SwiftUI.

AUTOCOMPLETADO SWITCH

Ahora cuando tenemos un enum y creamos un switch, no hace falta esperar a que nos salga un error para crear todos los casos automáticamente. Ahora cuando creamos el switch, Xcode nos sugiere rellenar todos los casos.

En la siguiente imagen vemos como al poner switch num si seleccionamos la primera opción nos crea el switch con todos los casos.

Autocompletar switch en Xcode 13

AUTOCOMPLETADO IF LET

Automáticamente cuando hacemos un if let de un opcional, Xcode nos sugiere autocompletar, nos aparece la opción de la siguiente imagen:

Autocompletar opcionales en Xcode 13

Al seleccionar esa opción, nos aparecería el siguiente código:

if let optional = optional {
	// TODO
}

DEBUGGING

Ahora podemos añadir breakpoints en columnas. Es muy útil para poder ver que ocurre en casos como en la siguiente imagen:

Column Breakpoints en Xcode 13

Para poner estos breakpoints solo debemos pulsar COMMAND + CLICK y seleccionar la opción de "Set Column Breakpoint" y automáticamente aparecerá un breakpoint que se parará antes de realizar el filter.


ORGANIZER

Hay una sección en Xcode que es muy útil y que pocos developers la conocen. Cuando lanzas una app en el App Store puedes obtener datos muy valiosos.
Si vamos a Window -> Organizer aquí puedes ver un listado de:

  • Crashes de tu app
  • Consumo de energía
  • Tiempo que tarda tu app en abrirse
  • Batería que consume tu app a los users
  • etc

En la nueva versión de Xcode 13 si un user tiene un crash aparecerá aquí en cuestión de minutos, y con la posibilidad de que los users añadan feedback para explicar qué ha pasado para que la app les crasheara.

También han añadido una parte de regresiones, para saber que los bugs que has arreglado en el pasado y han vuelto a aparecer sean fáciles de detectar.

Xcode 13 Organizer

VIM

Ahora en Xcode 13 podemos activar los key bindings de Vim y ser más productivos (eso sí, primero debemos aprender estos atajos)
Para activarlo hay que ir Xcode -> Preferences -> Text Editing -> Enable Vim key bindings.

Una vez habilitado podemos usar estos Key Bindings. Aquí unos ejemplos:

  • Si pulsamos h,j,k o l sirve para mover el cursor
  • Si pulsamos w y n para movernos al principio o final de la siguiente palabra.
    Como detalle, si una palabra tiene un punto final, dos puntos, interrogación, etc si usamos SHIFT + W nos movemos al final del punto.
  • Si pulsamos i podemos insertar código
  • Si pulsamos u revertimos cambios y para volverlos a aplicar hacemos CRT + R
  • Si pulsamos v podemos seleccionar varias líneas, y d es para cortar y p para pegar
  • Si pulsamos SHIFT + 5 nos movemos a las llaves de las funciones.

Esto son solo algunos, pero es para que veíais que ahora hay mucho más potencial al usar los key bindings de Vim dentro de Xcode 13


SWIFT REFACTORING

Otra mejora, es que podemos refactorizar métodos que usan completionBlock a Async. Tan solo debemos pulsar COMMAND + click en la función y nos aparece el menú de la imagen, ahí podemos escoger estas dos opciones, "Convert Function to Async" o “Convert Call to Async Alternative”. Y automáticamente tendremos esa función usando Async.


TESTING

Con esta nueva version de Xcode podemos ejecutar 1 tests de forma repetida para ver si es consistente. Ahora aparece una opción en Xcode 13 para repetir un tests tantas veces como queramos y ver si en alguna de sus ejecuciones falla.

Ejecuta tests varias veces en Xcode 13

Al seleccionar esta opción nos aparece la siguiente imagen, donde podemos seleccionar cuando parar nuestro test, el número de veces que queremos que se ejecute, etc:

Ejemplo de repetir tests en Xcode 13

De esta manera podemos configurar nuestro test.

Si quieres seguir aprendiendo sobre SwiftUI, Swift, Xcode, o cualquier tema relacionado con el ecosistema Apple


Xcode Tips