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
+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.
Commentaire le plus utile
@adasoft-dev, vous faites le contraire.
TransformOf
est défini commeTransformOf<Object, JSON>
qui correspond àString
etInt
.