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.

Swift – Editando el valor de un elemento en un Array Codable

Tengo un Dic codificable de una matriz.

public struct Pattern: Codable {
    public let event: Event?
    public var parameterCurve: ParameterCurve?

    enum CodingKeys: String, CodingKey {
        case event = "Event"
        case parameterCurve = "ParameterCurve"
    }
}

public struct ParameterCurve: Codable {
    public let parameterID: ParameterID?
    public let time: TimeInterval?
    public var parameterCurveControlPoints: [ParameterCurveControlPoint]?

    enum CodingKeys: String, CodingKey {
        case parameterID = "ParameterID"
        case time = "Time"
        case parameterCurveControlPoints = "ParameterCurveControlPoints"
    }
}

public struct ParameterCurveControlPoint: Codable {
    public let time: TimeInterval?
    public var parameterValue: Float!

    enum CodingKeys: String, CodingKey {
        case time = "Time"
        case parameterValue = "ParameterValue"
    }
}

Necesito cambiar el valor de ParameterCurveControlPoint.parameterValue.

let parameter = appleHapticAudioPattern.pattern?.first(where: { $0.parameterCurve?.parameterCurveControlPoints != nil})?.parameterCurve?.parameterCurveControlPoints

for i in parameter! {
    i.parameterValue += 0.2    // **_aquí aparece este problema en xcode_**
}

Xcode me alerta con el siguiente error:
 imagen

El mensaje de error que aparece es:
“El lado izquierdo del operador de mutación no es mutable: ‘i’ es una constante ‘let'”.

¿Cómo puedo solucionar este problema, por favor?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error te está diciendo que “i” es un valor constante y no puede ser mutado. Para solucionar este problema, necesitas hacer que “i” sea una variable en lugar de una constante.

    Puedes hacer esto cambiando el bucle “for” para usar “var” en lugar de “let”:

    for var i in parameter! {
        i.parameterValue += 0.2  
    }
    

    Esto te permitirá mutar el valor de “parameterValue” para cada elemento en el array.

Comments are closed.