Guardado interno de datos

Clase 32 de 36Curso de Desarrollo de Aplicaciones iOS con SwiftUI

Resumen

¿Cómo crear una clase para guardar y recuperar datos del usuario en Swift?

Habilitar funcionalidades que permitan a los usuarios guardar y recuperar datos es esencial para la mayoría de las aplicaciones móviles modernas. En esta sección, exploraremos cómo lograr esta tarea en una aplicación de iOS usando el lenguaje Swift. Vamos a crear una estructura que permita almacenar datos importantes como el correo, la contraseña y el nombre del usuario.

class SaveData {
    var correo: String = ""
    var contraseña: String = ""
    var nombre: String = ""

    func guardarDatos(correo: String, contraseña: String, nombre: String) -> Bool {
        print("Dentro de la función guardar datos obtuve: \(correo), \(contraseña), \(nombre)")
        UserDefaults.standard.set([correo, contraseña, nombre], forKey: "datosUsuario")
        return true
    }

    func recuperarDatos() -> [String] {
        let datosUsuario = UserDefaults.standard.stringArray(forKey: "datosUsuario") ?? [""]
        print("Recuperé los datos: \(datosUsuario)")
        return datosUsuario
    }

    func validar(correo: String, contraseña: String) -> Bool {
        guard let datosUsuario = UserDefaults.standard.stringArray(forKey: "datosUsuario") else {
            print("No hay datos de usuario guardados en UserDefaults")
            return false
        }
        
        let correoGuardado = datosUsuario[0]
        let contraseñaGuardada = datosUsuario[1]

        print("Validando datos. Correo guardado: \(correoGuardado), Contraseña guardada: \(contraseñaGuardada)")
        
        if correo == correoGuardado && contraseña == contraseñaGuardada {
            return true
        } else {
            return false
        }
    }
}

¿Cómo utilizamos UserDefaults para almacenar datos?

Swift facilita el almacenamiento de pequeñas cantidades de datos en un formato persistente mediante UserDefaults. Esto es ideal para información que no es demasiado pesada y requiere persistencia entre sesiones de la aplicación, como en el caso de almacenar strings, booleans y números.

  • Key-Value Pair: UserDefaults utiliza un sistema de llave-valor similar a un diccionario. Para recuperar los valores, utilizamos la llave asociada.

  • Tipos de datos soportados: UserDefaults es adecuado para tipos de datos simples como strings, booleans y números. No es recomendable para datos grandes como imágenes y videos.

¿Cómo validar datos de usuario en el inicio de sesión?

Al implementar la función de validación, creamos una lógica que compara el correo y la contraseña que ingresó el usuario con los ya almacenados. Esto es útil, por ejemplo, al validar un inicio de sesión:

func validar(correo: String, contraseña: String) -> Bool {
    if correo == correoGuardado && contraseña == contraseñaGuardada {
        return true
    } else {
        return false
    }
}

Con esta función, puedes indicar al usuario si introdujo correctamente los datos, y puedes hacerlo mostrando una alerta en caso de que no coincida.

Retos adicionales para el desarrollo

Para el ejercicio práctico propuesto, debes implementar la lógica que permita a un usuario registrarse y luego validar sus datos al iniciar sesión. Si los datos no son correctos, se debe mostrar una alerta:

  • Crea la interfaz gráfica que permita al usuario ingresar su correo y contraseña.

  • Implementa mensajes de alerta para darle retroalimentación al usuario si los datos son incorrectos.

Recuerda que este tipo de ejercicios mejora tus habilidades al trabajar con lógica de aplicación y manejo de usuarios, permitiéndote crear aplicaciones más funcionales y seguras. ¡Mucho ánimo, sigue practicando y avanzando en tu proceso de aprendizaje!