He actualizado swift 3 y he encontrado muchos errores. Este es uno de ellos :

Valor de tipo’?’ no tiene ningún miembro ‘objeto’

Este es mi código :

jsonmanager.post( "http://myapi.com",
                      parameters: nil,
                      success: { (operation: AFHTTPRequestOperation?,responseObject: Any?) in
                        if(((responseObject? as AnyObject).object(forKey: "meta") as AnyObject).object(forKey: "status")?.intValue == 200 && responseObject?.object(forKey: "total_data")?.intValue > 0){
                            let aa: Any? = (responseObject? as AnyObject).object(forKey: "response")

                            self.data = (aa as AnyObject).mutableCopy() 
                        }

Nuevo Error De Actualización :

Opcional de la cadena no tiene ningún efecto, la expresión ya produce ‘?’

Y

No se puede llamar valor de la no-tipo de función ‘?!’

Funciona bien en la versión anterior 7.3.1 swift 2.

Esta es la respuesta json :

{
 "meta":{"status":200,"msg":"OK"},
        "response":[""],
        "total_data":0
}
Por favor, muéstranos tu respuesta en json?
ver actualizado pregunta @NiravD
Me han dicho que nos muestran su respuesta en json, por lo que podemos crear un diccionario sobre la base de que.
¿Qué tipo de jsonmanager?
AFHTTPRequestOperationManager

OriginalEl autor stevengbu | 2016-09-15

2 Comentarios

  1. 18

    A diferencia de Swift 2, Swift 3 importaciones Objective-C id como Any? en lugar de AnyObject? (ver este veloz evolución de la propuesta). Para arreglar tu error, usted necesita para lanzar todas sus variables para AnyObject. Esto puede ser algo como lo siguiente:

    jsonmanager.post("http://myapi.com", parameters: nil) { (operation: AFHTTPRequestOperation?, responseObject: Any?) in
        let response = responseObject as AnyObject?
        let meta = response?.object(forKey: "meta") as AnyObject?
        let status = meta?.object(forKey: "status") as AnyObject?
        let totalData = response?.object(forKey: "total_data") as AnyObject?
        if status?.intValue == 200 && totalData?.intValue != 0 {
            let aa = response?.object(forKey: "response") as AnyObject?
            self.data = aa?.mutableCopy() 
        }
    }
    después de que me cambie, me puse el primer error : Valor de tipo’?’ no tiene ningún miembro ‘objeto’
    ¿me puedes mostrar tu código actualizado? Asegúrese de que tiene acceso a response en lugar de responseObject
    Acabo de editar mi respuesta, puede que desee probar con el nuevo código
    no importa, me percaté de que el problema (y se actualiza la respuesta una vez más). Inténtelo de nuevo.

    OriginalEl autor kabiroberai

  2. 0

    Su responseObject es Optional (específicamente, un Any?), por lo que se tienen que desenvolver en el fin de llamar a sus métodos de acceso o de sus propiedades, como responseObject?.object(forKey: "meta"), etc. Hay varios lugares en los marcos donde los valores que solía ser noOptional ahora Optional, especialmente en donde fueron utilizados en Objective-C sin especificado nulabilidad de clasificación.

    ver actualizado pregunta, gracias

    OriginalEl autor NRitH

Dejar respuesta

Please enter your comment!
Please enter your name here