Swift - Obtener datos de una variable modificada desde otra clase

 
Vista:

Obtener datos de una variable modificada desde otra clase

Publicado por Antonio (1 intervención) el 25/05/2016 17:49:59
Seguramente sea una cosa bastante simple, pero dado que soy bastante novato en la materia no os sorprendáis.

Estoy desarrollando una sencilla aplicación: Se trata de un test de preguntas, a medida que el usuario acierta preguntas sube de nivel y se le muestran otras preguntas de nivel superior.

Tengo definidas varias clases: Una para el ViewControler, otra para el Modelo, para las preguntas y para el usuario.
El caso es que cuando el usuario responde correctamente a un determinado número de palabras sube de nivel, y se debe generar un nuevo array de preguntas, esta vez del nivel superior.

Tal y como lo tengo definido:

Cuando a través del ViewControler se contesta correctamente al número especificado de palabras se llama al método subir de nivel de la clase usuario y posteriormente trato de acceder a ese dato desde el modelo que es donde genero la nueva array de palabras. El caso es que no se como acceder al dato modificado ya que si creo un nuevo objeto de la clase usuario me da el nivel por defecto.

¿Alguna idea? Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Solución para actualizar el nivel del usuario y generar nuevas preguntas

Publicado por Alejandro (12 intervenciones) el 21/02/2024 20:15:50
Antonio, parece que estás enfrentando un problema común en el que la información sobre el nivel del usuario no se refleja correctamente en otras partes de tu aplicación. Aquí hay una posible solución utilizando un enfoque más global o centralizado para el manejo de datos de usuario y preguntas.

1. Crear una clase de gestión:

Crea una clase para gestionar el estado global de tu aplicación, incluyendo información sobre el usuario y las preguntas. Puedes llamar a esta clase, por ejemplo, `GameManager`.

1
2
3
4
5
6
7
8
9
10
class GameManager {
    static let shared = GameManager() // Singleton para acceder globalmente
 
    var usuario: Usuario = Usuario() // Instancia del usuario
    var preguntas: [Pregunta] = [] // Array de preguntas actual
 
    private init() {
        // Inicialización si es necesario
    }
}

2. Actualizar el nivel del usuario:

Cuando el usuario sube de nivel, actualiza el nivel de `GameManager.shared.usuario`.

1
2
3
4
// En tu ViewController
func usuarioSubeDeNivel() {
    GameManager.shared.usuario.subirDeNivel()
}

3. Generar nuevas preguntas:

Cuando necesites generar nuevas preguntas, accede al nivel actual del usuario a través de `GameManager.shared.usuario`.

1
2
3
4
5
6
7
// En tu Modelo
func generarNuevasPreguntas() {
    let nivelActual = GameManager.shared.usuario.nivel
    // Lógica para generar preguntas basadas en el nivel actual
    // ...
    GameManager.shared.preguntas = nuevasPreguntas
}

4. Acceder a la información global:

En cualquier parte de tu aplicación, puedes acceder a la información global a través de `GameManager.shared`.

1
2
let nivelActual = GameManager.shared.usuario.nivel
let preguntasActuales = GameManager.shared.preguntas

Este enfoque asegura que todos los componentes de tu aplicación accedan a la misma instancia de `GameManager`, garantizando que compartan el mismo estado global del juego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar