Evita Duplicados en SwiftData con el Macro Unique

Cuando trabajamos con bases de datos, es imprescindible garantizar que los datos se mantengan en un estado coherente. Una herramienta clave para lograr esto son las restricciones de unicidad (conocidas como constraints en inglés), que permiten definir qué propiedades de un modelo deben ser únicas en cada registro.

En SwiftData, logramos implementar estas restricciones mediante el macro #Unique. Este macro se utiliza para especificar qué combinaciones de propiedades en un modelo deben ser únicas.

Si quieres una introducción a Swift Data, te recomendamos este artículo.

Ejemplo práctico: Definir una propiedad única

Veamos un ejemplo básico en Swift:

@Model
class Product {
#Unique<Product>([\.name])
var name: String
var barcode: String
var date: Date
}

En este caso, estamos indicando que la propiedad name es única dentro del modelo Product, utilizando un keypath.

Comportamiento en caso de colisión

Si ocurre una colisión (es decir, si se intenta insertar un registro que no cumple con la restricción de unicidad), SwiftData realizará una operación de actualización en lugar de una inserción. Esto significa que, si intentamos agregar un producto con el mismo name, los demás datos del registro existente se actualizarán en lugar de crearse un nuevo registro.

Definir restricciones compuestas

También es posible definir restricciones que incluyan varias propiedades, ya que el macro acepta un arreglo de keypaths. Por ejemplo, si queremos que la restricción considere tanto la propiedad name como barcode, el macro se definiría de la siguiente manera:

#Unique<Product>([\.name, \.barcode])

Conclusión

Utilizar el macro #Unique en SwiftData facilita garantizar la integridad de los datos y evita duplicados no deseados en nuestras bases de datos. Esta funcionalidad es especialmente útil para mantener consistencia en modelos con múltiples propiedades que deben ser únicas.

Comparte este artículo

Subscríbete a nuestro Newsletter

Mantente al día en el mundo de las aplicaciones móviles con nuestro blog especializado.

Artículos semanales

Todas las semanas artículos nuevos sobre el mundo de las aplicaciones móviles.

No spam

No te enviaremos spam, solo contenido de calidad. Puedes darte de baja cuando quieras.

Contenido de calidad

Nada de contenido generado de manera automática usando ChatGPT.

Recomendaciones

Tips indispensables sobre mejores prácticas y metodologías.

© 2025 AsyncLearn