Objectmapper: Opérateur binaire ')

Créé le 8 mars 2017  ·  3Commentaires  ·  Source: tristanhimmelman/ObjectMapper

Salut,
J'essaie de mapper un json à un objet, et il y a une valeur (un entier) qui est toujours nulle.

Ceci mon exemple json:

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

Et voici mon code :

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)

    }
}

Étant donné que le json renvoie "age" sans utiliser "", j'essaie de le convertir en chaîne à l'aide de la fonction transformOF, je peux donc le stocker dans la variable "age" de type chaîne (je ne peux pas changer le type de "age" à Int, car j'ajouterai ensuite le support de domaine et j'ai besoin que cette variable soit une chaîne).

Quoi qu'il en soit, je ne peux pas compiler le projet, en raison de cette erreur lorsque j'essaie d'appliquer la fonction de transformation :

L'opérateur binaire '<-' ne peut pas être appliqué aux opérandes de type 'String' et '(Map, TransformOf)'

Comment puis-je utiliser correctement TransformOf pour convertir mon entier en chaîne ?

Merci

Commentaire le plus utile

@adasoft-dev, vous faites le contraire. TransformOf est défini comme TransformOf<Object, JSON> qui correspond à String et 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
    }
  }
)

Tous les 3 commentaires

+1

@adasoft-dev, vous faites le contraire. TransformOf est défini comme TransformOf<Object, JSON> qui correspond à String et 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
    }
  }
)

J'ai le même problème. Le serveur renvoie toujours la valeur est de type int ou de type chaîne, parfois la valeur est modifiée, donc je souhaite que le type défini dans la classe, le type de valeur dans la chaîne json puisse être transformé. Donc je n'ai pas besoin de changer le type dans la classe.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

nashirox picture nashirox  ·  4Commentaires

pcompassion picture pcompassion  ·  3Commentaires

danyalaytekin picture danyalaytekin  ·  4Commentaires

liltimtim picture liltimtim  ·  3Commentaires

nearspears picture nearspears  ·  4Commentaires