Objectmapper: Operador binario ')

Creado en 8 mar. 2017  ·  3Comentarios  ·  Fuente: tristanhimmelman/ObjectMapper

Hola,
Estoy tratando de asignar un json a un objeto y hay un valor (un número entero) que siempre es nulo.

Esta es mi muestra json:

{"username":"user1","age":3}

Y este es mi código:

class T1: Mappable {
    var username: String?
    var age: String?

    required init?(map: Map) {

    }

    // Mappable
    func mapping(map: Map) {

        let transform = TransformOf<Int, String>(fromJSON: { (value: String?) -> Int? in
            // transform value from String? to Int?
            return Int(value!)
        }, toJSON: { (value: Int?) -> String? in
            // transform value from Int? to String?
            if let value = value {
                return String(value)
            }
            return nil
        })

        username    <- map["username"]
        age <- (map["age"], transform)

    }
}

Dado que el json está devolviendo "edad" sin usar "", estoy tratando de convertirlo en una cadena usando la función transformOF, por lo que puedo almacenarlo en la variable "edad" de tipo cadena (no puedo cambiar el tipo de "edad" a Int, ya que a continuación agregaré soporte de reino y necesito que esa variable sea una Cadena).

De todos modos, no puedo compilar el proyecto, debido a este error cuando intento aplicar la función de transformación:

El operador binario '<-' no se puede aplicar a operandos de tipo 'Cadena' y '(Map, TransformOf) '

¿Cómo puedo usar TransformOf correctamente para convertir mi número entero en una cadena?

Gracias

Comentario más útil

@ adasoft-dev, lo estás haciendo al revés. TransformOf se define como TransformOf<Object, JSON> que corresponde a String y Int .

let transform = TransformOf<String, Int>(
  fromJSON: { (value: Int?) -> String? in
    if let value = value {
      return String(value)
    } else {
      return nil
    }
  },
  toJSON: { (value: String?) -> Int? in
    if let value = value {
      return Int(value)
    } else {
      return nil
    }
  }
)

Todos 3 comentarios

+1

@ adasoft-dev, lo estás haciendo al revés. TransformOf se define como TransformOf<Object, JSON> que corresponde a String y Int .

let transform = TransformOf<String, Int>(
  fromJSON: { (value: Int?) -> String? in
    if let value = value {
      return String(value)
    } else {
      return nil
    }
  },
  toJSON: { (value: String?) -> Int? in
    if let value = value {
      return Int(value)
    } else {
      return nil
    }
  }
)

Tengo el mismo problema. El servidor siempre devuelve el valor es tipo int o tipo de cadena, en algún momento se cambia el valor, por lo que deseo que el tipo definido en la clase, el tipo de valor en la cadena json se pueda transformar. Entonces no necesito cambiar el tipo en la clase.

¿Fue útil esta página
0 / 5 - 0 calificaciones