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.

El valor de tipo ‘Result‘ no tiene ningún miembro ‘value’ (con Xcode 13.2 y AlamoFire 5.4.3).

Estoy intentando actualizar una aplicación en Xcode 13.2 con AlamoFire 5.4.3, SwiftyJSON 5.0.1. Pude hacer que todo funcione excepto por los siguientes errores. (El valor del tipo ‘Result<any, aferror=””>’ no tiene un miembro llamado ‘value’)

Soy bastante nuevo en Swift y tengo muchas ganas de aprender. La aplicación funcionaba bien cuando se utilizaba una versión más antigua de AlamoFire. No escribí esta aplicación originalmente. Cualquier ayuda sería muy apreciada. Si puedo aclarar algo, por favor avíseme.

James

“`
class func getPatiens(options: String, completion: @escaping (_ status: Bool, _ message:String, _ patientsList: [PatientEntity]) -> Void) {

<pre><code>let url = Common.getRequestURL(action: "PATIENTS", options: options, index: "")

AF.request(url, method: .get, encoding: JSONEncoding.default).responseJSON { (response) in
switch(response.result) {

case .success(_):

// ERROR: El valor del tipo 'Result<any, aferror="">' no tiene un miembro llamado 'value'
if response.result.value != nil{

// ERROR: El valor del tipo 'Result<any, aferror="">' no tiene un miembro llamado 'value'
let jsonResult = JSON(response.result.value as! [String: Any])

let patientsList = jsonResult["results"].array!

var arrPatients = [PatientEntity]()

for index in 0 ..< patientsList.count {
let patient = PatientEntity()

patient.p_dol = patientsList[index]["DOL"].string!
patient.p_id = patientsList[index]["ID"].string!
patient.p_name = patientsList[index]["NAME"].string!

arrPatients.append(patient)
}

completion(true, "success", arrPatients)
}
break

case .failure(_):
completion(false, "Server Failed", [])
break
}
}
</code></pre>

}
“`</any,></any,></any,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con los cambios en la última versión de AlamoFire (5.4.3) que han actualizado la estructura de respuesta devuelta por la llamada a la API. Específicamente, el objeto “Result<any, aferror=””>” devuelto por el método “.responseJSON” ya no tiene una propiedad “value”.

    Para solucionar este problema, debes usar directamente la propiedad “result” en lugar de “result.value”. Por lo tanto, reemplaza las dos líneas con la referencia a la propiedad “value” con el siguiente código:

    if let jsonResponse = response.value {
        let jsonResult = JSON(jsonResponse as! [String: Any])
        // ...
    }
    

    Esto debería permitirte analizar correctamente la respuesta de la API y actualizar tu aplicación. Además, asegúrate de consultar la documentación de la última versión de AlamoFire para ver otros posibles cambios que deban abordarse. ¡Buena suerte en tu proceso de aprendizaje!</any,>

Comments are closed.