Novedades Xcode 15
Novedades Xcode 15

Novedades Xcode 15

Novedades en Xcode 15, hoy vamos a explorar las novedades más importantes de esta nueva versión de Xcode, desde mejoras en las sugerencias del autocompletado, macros introducidas en Swift 5.9, Previews, hasta Debugging

SwiftBeta

Tabla de contenido


👇 SÍGUEME PARA APRENDER SWIFTUI, SWIFT, XCODE, etc 👇
Novedades Xcode 15
Novedades Xcode 15

Hoy en SwiftBeta vamos a aprender las novedades de Xcode 15. De momento es una Beta, pero como siempre, el lanzamiento final será en septiembre, así que podemos ir aprendiendo todas sus novedades.

Puedes descargar la Beta desde este enlace de Xcode

Aquí verás varios recursos, tan solo debes clickar en Xcode 15 Beta. Y una vez descargado, puedes ver todas las novedades de esta nueva versión.

Quick Actions

Lo primero de todo que me gustaría mencionar son las Quick Actions. Ahora si pulsamos COMMAND+SHIFT+A aparece una ventana al estilo Spotlight. Aquí podemos lanzar acciones para que Xcode 15 las ejecute. Vamos a ver algunos ejemplos.

  • Crear un nuevo fichero
  • Build de la app

Hay algunas opciones de esta nueva funcionalidad de Quick Actions que prefiero usar los atajos de teclado, como COMMAND+N para crear un nuevo fichero o pulsar COMMAND+B para hacer un build de la app (en mi caso es más natural, pero veremos con el tiempo).

Vamos a ver otro ejemplo de uso de Quick Actions, si tenemos un tipo User, podemos usar las Quick Actions para crear un inicializador rápidamente:

struct User {
    let name: String
    let age: Int
}

Seleccionamos User y pulsamos COMMAND+SHIFT+A, y buscamos la opción init. Y escogemos Generate Memberwise Initializer y automáticamente Xcode nos crea el inicializador.

Autocompletado

SUGERENCIAS
En Xcode 15 el autocompletado ha sido mejorado, ahora si queremos añadir un ViewModifier en nuestras vistas en SwiftUI, Xcode reconoce el contexto y nos sugiere el mejor ViewModifier para la View. ¿Cómo? vamos a ver unos ejemplos. Podemos usar el código de ejemplo al crear una app en Xcode.

  • Si vamos a la View Text, si ponemos punto, el ViewModifier que nos sugiere es el de font.
  • Si vamos a la View VStack, si ponemos punto, el ViewModifier que nos sugiere es el padding.

También, ahora si creamos un nuevo fichero Xcode 15 nos sugiere el mismo nombre para el tipo. Vamos a verlo, creamos un fichero llamado Database. Si creamos una class o struct y escribimos D, el autocompletado nos sugiere el mismo nombre que el fichero (este es un detalle curioso que también quería comentarte).

Antes de seguir con más novedades de Xcode 15, vamos a ver una última mejora de autcompletado, ahora si queremos usar un ViewModifier en una vista en SwiftUI, podemos ver todos sus parámetros, es decir, podemos ver todas las permutaciones posibles.

Un ejemplo muy claro es usando el ViewModifier frame en el VStack. Aquí podemos pulsar la tecla derecha para ver todas las posibles opciones al usar este ViewModifier. Esto puede estar bien, pero cuando hay muchas puede generar mucho ruido.

Asset Catalogs

Una de las novedades que más me han gustado es la de poder tener nuestros assets  con un tipado seguro. Es decir, ya no hace falta hacer referencia a los assets de nuestro proyecto con strings, ahora Xcode genera un símbolo con tipado seguro, (imagina que es como un case de un enum).

Vamos a ver un ejemplo, vamos arrastrar la siguiente imagen al proyecto (puedes descargarla).

Una vez tenemos el asset, lo que hacemos es arrastrarlo a Xcode y en mi caso el asset tiene el nombre de swiftbeta. Una vez hecho este paso ya podemos usarlo en nuestro código, nos vamos al código de ejemplo, y al poner . vemos que aparece el asset llamado swiftbeta. Podemos inspeccionar para obtener más información, si pulsamos COMMAND+CLICK podemos ver que pertenece a una extensión de DeveloperToolsSupport.ImageResource

Si compilamos nuestra app, vamos a ver el resultado en el simulador. Puedes usar la QUICK ACTION pulsando COMMAND+SHIFT+A o el atajo de toda la vida, COMMAND+R.

El resultado es que aparece la imagen correctamente en la vista de nuestra aplicación. Esta funcionalidad parece pequeña pero aporta muchísimo valor cuando creamos una aplicación con muchas imágenes o assets.

Vamos a continuar con más novedades.

String Catalog

Ahora con Xcode 15, tenemos una nueva manera de crear las traducciones de nuestra app. Vamos a crear un nuevo fichero de traducciones, pulsamos COMMAND+N y buscamos string en el buscador. Fïjate que aparecen 3 resultados y en 2 de ellos aparece la palabra legacy, esta es la manera de hacerlo antes de Xcode 15. Vamos a escoger la nueva opción llamada String Catalog.

Creamos el fichero con el nombre de Localizable,y al hacerlo aparece una nueva interfaz. A la izquierda podemos ir creando los lenguajes que sopora nuestra app. Por ejemplo, vamos a pulsar el button + y vamos a añadir Spanish. Ahora observamos que aparecen 2 lenguajes.

Lo siguiente que vamos hacer es añadir nuestra primera key. Para hacerlo es muy sencillo, pulsamos al + y añadimos una Key. Nuestra primera key va a ser onboarding, y el mensaje que queremos es Subscribe to SwiftBeta!

Fíjate que en el lenguaje de Spanish, aparece un 0%, esto nos indica el progreso de keys que tenemos en Inglés, pero que no están traducidas en Español. Vamos a arreglarlo añadiendo la traducción al español.

Añadimos ¡Suscríbete a SwiftBeta!, automáticamente aparece un check verde en la columna de estado, y también aparece un check verde en la sección del lenguaje. Indicando que todos los copies, todas las traducciones están 100% completas. Ahora podríamos ir a nuestra View y usar la nueva Key. Vamos a hacerlo.

struct ContentView: View {
    var body: some View {
        VStack {
            Image(.swiftbeta)
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("onboarding")
                .font(.body)                
        }
    }
}

Si compilamos vemos que se muestra correctamente en el simulador. Molaría mucho que las keys de las traducciones fueran como los assets que hemos visto antes, que al poner un . aparecieran todas las opciones disponibles. Básicamente lo que hace SwiftGen, una librería externa de la que no voy a entrar en detalles, pero es muy usada dentro de aplicaciones iOS.

Documentación

Vamos a continuar! otra de las mejoras de Xcode 15 es la documentación. Ahora si pulsamos option o alt y clickamos en un tipo, viewmodifier, método, etc podemos ver que el nuevo panel de documentación ha sido mejorado.

Pero sin lugar a duda el protagonista es el nuevo assistant donde podemos ver en tiempo real la documentación que vamos añadiendo de nuestro código.

Por ejemplo, si tenemos el siguiente tipo llamado User:

/// Type User
///
/// This user is awesome because it's subscribed to SwiftBeta's Channel on Youtube
struct User {
    let name: String
    let age: Int
    
    /**
     Initializes a new user with the required parameters
     
     - Parameters:
     - name: Name of the user
     - age: Age of the user
     
     - Returns: User.
     */
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

Podemos ir creando la documentación y verla en tiempo real si abrimos un nuevo assistant y seleccionamos Documentation Preview. Ahora si hacemos cualquier cambio lo vemos reflejado automáticamente.

Vamos a añadir más documentación, en este caso un fragmento de código, justo en la documentación del init añadimos el siguiente código:

```
let user = User(name: "SwiftBeta", age: 35)
```

Automáticamente vemos actualizada la documentación con un fragmento de código, pero molaría tener un hightligh del código, para hacerlo podemos especificar el lenguaje de la siguiente manera:

```swift
let user = User(name: "SwiftBeta", age: 35)
```

Una vez hemos visto las mejoras en documentación, vamos a ver las mejoras en las Previews.

Previews

Las previews en Xcode 15 han pegado un mejora muy buena, son mucho más simples de usar gracias a las Macros. Las Macros son una nueva funcionalidad en Swift 5.9 que nos permite simplificar nuestro código, hablaremos de las Macros en futuros videos del canal ya que es una de las novedades estrella de este año.

Vamos a continuar con las previews, ahora para ver una preview tan solo debemos usar la macro #Preview y automáticamente nuestra vista en SwiftUI se muestra en el Canvas. Si queremos dar un nombre a nuestra vista solo tenemos que hacer lo siguiente:

#Preview("Vista 1") {
    ContentView()
}

#Preview("Vista 2") {
    ContentView()
}

Lo bueno de la nueva macro Preview, es que podemos tener previews de nuestras vista en UIKit y AppKit. Vamos a ver un ejemplo con UIKit:

#Preview {
    let viewController = UIViewController()
    viewController.view.backgroundColor = .blue
    return viewController
}

Al hacerlo, vemos que la preview del canvas muestra la vista que acabamos de crear. Es sencilla, pero es solo para que te hagas una idea. Y también podríamos hacer lo mismo usando AppKit (el framework para crear vistas en app macOS).

Una vez hemos visto las previews, vamos a continuar

Bookmarks

Una de las novedades en Xcode 15 son los bookmarks. Esta nueva funcionalidad nos permite añadir marcadores dentro de nuestro código para acceder a él muy rápidamente. Imagina que tu app es enorme, y quieres tener referencias rápidas para acceder a la sección de deeplinks/Universal Links, registro de un user, el punto de entrada de las push notificacions, etc. Puedes crear esta referencias con los bookmarks.

Para crear un bookmark es tan sencillo como ir a la parte del código a la que quieres tener un acceso rápido. En nuestro caso nos vamos al init del tipo User. Y allí pulsamos el botón derecho, vemos que aparecen una serie de opciones. Fíjate que nos interesa la opción de Bookmark, aquí podemos indicar un Bookmark general al fichero o un Bookmark justo en la línea del init. Vamos a escoger esta última opción.

Al hacerlo, vemos que en la sección de Bookmarks aparece un acceso rápido al init de User. Cuando clickemos en este Bookmark navegaremos directamente a la línea del init, vamos a probarlo. Perfecto.

Ya que estamos aquí, vamos a seleccionar otra línea como Bookmark, vamos a seleccionar la propiedad name. Ahora vemos que aparecen 2 Bookmarks en nuestro listado. Podemos agruparlos, pulsamos boton derecho y creamos una nuevo grupo. Al nuevo grupo podemos llamarlo Refactor User, así todo el código relacionado aparecerá en el mismo sitio.

Lo bueno de los Bookmarks es que se pueden transformarse como lista de tareas, como un TODO pendiente. Si enfocamos el ratón a la izquierda de un Bookmark podemos marcar ese bookmark como completado. Una herramienta muy útil para tener referencias al código de nuestra app.

Después de haber analizado los bookmarks, vamos a continuar

Source Control Navigator

Una de las novedades en Xcode 15 es la UI que aparece ahora para poder usar git, se nota que cada vez están poniendo más cariño al tema de versionado. En este caso es muy fácil trackear los cambios introducidos en nuestro código de una manera muy visual. En nuestro caso vamos a marcar todos los cambios y vamos a commitear.

Si tuviera una rama en remoto podría pushear para integrar esos cambios en mi rama principal. Este tema es muy interesante y lo abordaremos más adelante en el canal.

Y por último, vamos a ver el nuevo sistema de logs de Xcode.

Debugging

Ahora en Xcode podemos debuggear usando OSLog, esta nueva integración nos permite ver por consola diferentes mensajes con diferente severidad. Es decir, podemos mostrar logs informativo, otros de warnings, otros de errores, etc. Vamos a ver un ejemplo:

import OSLog

struct ContentView: View {
    let logger = Logger()
    
    var body: some View {
        VStack {
            Image(.swiftbeta)
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("onboarding")
                .font(.body)
            Button("Info") {
                logger.info("Informativo")
            }
            Button("Error") {
                logger.error("Error")
            }
            Button("Warning") {
                logger.warning("Warning")
            }
        }
    }
}

Para hacer el ejemplo más sencillo, solo hemos usado 3 métodos diferentes de logger: Info, Error y Warning. Si ahora compilamos y pulsamos estos Buttons, vamos a ver qué información aparece por consola.

Al pulsar los 3 vemos que aparecen algunos con un background diferente. Según la severidad el color nos indica que prestemos más atención a esos logs. También podemos mostrar más información si pulsamos a los Toggles de la consola. Aquí podemos ver el timestamps, librería, proceso, etc.

Bastante interesante y potente tener OSLog integrado con Xcode.

Hemos visto unas cuantas novedades de Xcode 15, hay alguna más, como poder distribuir directamente a Testflight desde Xcode, poco a poco iremos viendo todas estas novedades en el canal

Y hasta aquí el video de hoy!