DEV Community

GoyesDev
GoyesDev

Posted on

[SD] Stack de Swift Data

Contenedor

ModelContainer es el objeto en cargo de administrar la base de datos y almacenar los datos de forma permanente en disco.

Se puede inicializar con el siguiente constructor:

Luego, se puede inyectar a la jerarquía de una vista o escena, por medio de los siguientes modificadores:

También se puede crear el contenedor indirectamente, inyectándolo como variable de ambiente a la jerarquía de una vista o escena con los siguientes modificadores:

Sea por la aproximación directa o la indirecta, al crear el contenedor basta con pasa un arreglo de los tipos de los modelos de la base de datos.

Configuración del contenedor

En cuanto a la configuración ModelConfiguration

Contexto

La aplicación accede a los datos a través de ModelContext, un objeto que permite extraer, insertar, eliminar modelos y guardar cambios en el disco.

El ModelContext se puede inicializar a partir del ModelContainer con ModelContext.init(_:), o bien se puede acceder al contexto del contenedor por medio de ModelContainer.mainContext.

ModelContext puede manipular el contenedor por medio de los siguientes métodos:

Modelo

El macro Model() convierte una clase (no sirve struct) en un modelo de SwiftData. Al compilarse, el macro hace que la clase conforme PersistentModel y Observable. Se puede conformar PersistentModel, pero de hacerlo, se tienen que definir init(backingData: any BackingData<AnotherModel>), var persistentBackingData: any BackingData<AnotherModel> y static var schemaMetadata: [Schema.PropertyMetadata]; así que es más práctico solo marcar el macro @Model sobre la clase.


Bibliografía

Top comments (0)