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:
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?
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”:
Esto te permitirá mutar el valor de “parameterValue” para cada elemento en el array.