es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La función no se ejecuta correctamente – Swift

He escrito un poco de código, pero no está funcionando como se esperaba. Tengo el siguiente código:

Mi archivo de vista de contenido:

import SwiftUI

struct ContentView: View {
@State var liste: [Can] = [Can()]
var body: some View {
Button {
liste[0].nested.change()
} label: {
Text(“(liste[0].nested.property)”)
}
}
}

y otro archivo:

import SwiftUI

struct Can: Identifiable, Equatable, Codable, Hashable {

static func == (lhs: Can, rhs: Can) -> Bool {
    lhs.id == rhs.id
}

func hash(into hasher: inout Hasher) {
    hasher.combine(id)
}

// Cada elemento
let id = UUID()

var nested = nestedThingies()

struct nestedThingies: Codable {
    var property = 15
    mutating func change(){
        property -= 1
    }
}

}

Lo que esperaría de este código es que cada vez que se presiona el botón en ContentView, el valor del nested.property del primer elemento en el Array liste se reduzca en 1 (property -= 1).

Lo que realmente está sucediendo:
La función change () se llama, pero el valor de property solo cambia de 15 a 14 sin importar cuántas veces se presione ese botón.

He probado ese código también en un proyecto vacío, y hizo lo mismo raro …

¿Alguien puede explicarme ese comportamiento?
Gracias, Boothosh

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que está teniendo es que la función change() no está mutando el valor de property como se espera. Es posible que el valor de property no se esté actualizando correctamente debido a la forma en que se está manejando el array liste.

    Para ayudar a depurar este problema, podría intentar los siguientes pasos:

    1. Verificar el valor de property antes y después de llamar a la función change().
    2. Verificar si el array liste se está actualizando correctamente.
    3. Verificar si el valor de property se está actualizando correctamente cuando se llama a la función change().
    4. Verificar si el valor de property se está actualizando correctamente cuando se actualiza el array liste.

    Si el problema persiste, podría intentar crear un ejemplo mínimo reproducible del problema y publicarlo en Stack Overflow para obtener más ayuda.

Comments are closed.