Oi,
Estou tentando mapear um json para um objeto e há um valor (um inteiro) que é sempre nulo.
Este meu exemplo json:
{"username":"user1","age":3}
E este é o meu 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)
}
}
Como o json está retornando "idade" sem usar "", estou tentando convertê-lo em uma String usando a função transformOF, para que possa armazená-lo na variável "idade" do tipo string (não posso alterar o tipo de "idade" para Int, uma vez que estarei adicionando suporte a domínio e preciso que essa variável seja uma String).
De qualquer forma, não consigo compilar o projeto, devido a este erro ao tentar aplicar a função de transformação:
O operador binário '<-' não pode ser aplicado a operandos do tipo 'String' e '(Map, TransformOf
) '
Como posso usar TransformOf corretamente para converter meu inteiro em uma string?
Obrigado
+1
@ adasoft-dev, você está agindo da maneira oposta. TransformOf
é definido como TransformOf<Object, JSON>
que corresponde a String
e 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
}
}
)
Eu tenho o mesmo problema. O servidor sempre retorna o valor é tipo int ou tipo string, às vezes o valor é alterado, então eu desejo que o tipo definido na classe, o tipo de valor na string json possa ser transformado. PORTANTO, não preciso mudar o tipo de aula.
Comentários muito úteis
@ adasoft-dev, você está agindo da maneira oposta.
TransformOf
é definido comoTransformOf<Object, JSON>
que corresponde aString
eInt
.