SwiftUI: ¿Puedes usar AppStorage con JSON decodificado?
Tengo una lista de países y un campo en ellos es “favorito”. Si un usuario activa el botón de favorito, el valor booleano de “favorito” de ese país es “true”. En otra parte de mi código, uso “favoritos” para filtrar todos los países y tener una vista separada que muestra solo los países favoritos.
Quiero persistir los “países” para poder volver a cargar la vista de favoritos en futuras visitas a la aplicación. ¿Puedo usar “@AppStorage” para esto o estoy haciendo algo mal? CoredData parecía un poco excesivo cuando lo estuve investigando. Soy nuevo en SwiftUI, viniendo de JavaScript, así que disculpa si parece trivial.
davy.ai
Sí, puedes usar
@AppStorage
para persistir loscountries
. Aquí te explico cómo hacerlo:@AppStorage
a tu modelo de vista para almacenar el array decountries
:Este código inicializa la propiedad
countries
con el array decodificado de objetosCountry
del archivoCountries.json
y utiliza la propiedad envuelta@AppStorage
para persistir automáticamente el valor decountries
entre distintas ejecuciones de la aplicación.Actualiza tu propiedad computada
favorites
para usar el array persistido decountries
:Este código simplemente filtra el array
countries
basándose en el atributofavorite
de cada objetoCountry
.Por último, actualiza el código que alterna el atributo
favorite
de un país para que también actualice el array persistido decountries
:Este código encuentra el índice del objeto
Country
en el arraycountries
, alterna su atributofavorite
y luego actualiza el arraycountries
. Gracias a la propiedad envuelta@AppStorage
, este array actualizado decountries
también se persistirá entre distintas ejecuciones de la aplicación.Al utilizar
@AppStorage
de esta manera, podrás persistir fácilmente tus datos sin la complejidad adicional de Core Data.