diegoRodicio

Está documentación está a túa disposición sin ningún custo económico. Sen embargo, para a súa elaboración dedico moito tempo e recursos, polo que agradecería unha colaboración co que consideres oportuno. Gracias.

Persistencia de datos

É frecuente que unha aplicación necesite almacenar datos que persistirán durante os reinicios da aplicación.

  • Isto é particularmente útil para almacenar a configuración de preferencias do usuario
  • Tamén ao restaurar unha escena ao estado exacto no que estaba a última vez que o usuario accedeu a ela.

Para iso, SwiftUl proporciona dúas envolturas de propiedades (property wrappers):

  • @AppStorage
  • @SceneStorage

@SceneStorage #

@SceneStorage utilízase para almacenar e recuperar datos dunha escena específica.

  • Utilízase para preservar o estado dunha vista entre diferentes sesións de usuario, mesmo despois de pechar a aplicación.
  • É especialmente útil cando se desexa gardar o estado dunha vista nun escenario de multitarea.

Por exemplo, se tes unha aplicación que permite ao usuario tomar notas, podes usar @SceneStorage para gardar as notas do usuario mentres a aplicación está en segundo plano ou se pecha, e logo recuperalas cando a aplicación volva abrirse.

Considera, por exemplo, unha aplicación na que se introduce información mediante un formulario.

  • Mentras introducimos os datos nos chaman ao móbil e deixamos a aplicación en segundo plano.
  • Despóis da chamada, olvidamos volver a nosa aplicación a introducir os datos e gardalos.
  • Se a aplicación se pecha aplicación a información parcial introducida no formulario perderíase.

Para solucionar o problema anterior, empregamos @SceneStorage

Como funciona @SceneStorage? #

Declaramos unha propiedade mediante @SceneStorage xunto cun valor String e que se utiliza para almacenar o valor asociado:

struct ContentView: View {

    @SceneStorage("nomeUsuario") var nomeUsuario = ""
    
    var body: some View {
        TextEditor(text: $nomeUsuario)
    }
}

Cando se implementa nunha aplicación, isto garantirá que calquera texto introducido no campo de texto se conserve dentro da escena aínda que se reinicie a aplicación.

@AppStorage #

  • @SceneStorage permite que cada escena individual dentro dunha aplicación teña a súa propia copia dos datos almacenados. Noutras palabras, os datos almacenados por unha escena non son accesibles para ningunha outra escena na aplicación
  • @AppStorage utilízase para almacenar datos que están dispoñibles universalmente en toda a aplicación.

Do mesmo xeito que con @SceneStorage, @AppStorage require un valor de cadea para servir como clave e pode declararse da seguinte maneira:

struct ContentView: View {

    @AppStorage("nomeUsuario") var nomeUsuario = ""
    
    var body: some View {
        TextEditor(text: $nomeUsuario)
    }
}

UserDefaults #

@AppStorage baséase en UserDefaults, unha forma para que as aplicacións accedan e almacenen as preferencias predeterminadas do usuario (como as preferencias de idioma ou as opcións de cor).

UserDefaults tamén se pode utilizar para almacenar pequenas cantidades de datos necesarios para a aplicación en forma de pares crave-valor.

De forma predeterminada, os datos almacenaranse no almacenamento estándar de UserDefaults.

Share Your Valuable Opinions