Objectmapper: Operador binário ')

Criado em 8 mar. 2017  ·  3Comentários  ·  Fonte: tristanhimmelman/ObjectMapper

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

Comentários muito úteis

@ 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
    }
  }
)

Todos 3 comentários

+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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

AashishSapkota picture AashishSapkota  ·  3Comentários

maksTheAwesome picture maksTheAwesome  ·  4Comentários

nearspears picture nearspears  ·  4Comentários

loryhuz picture loryhuz  ·  4Comentários

zhengying picture zhengying  ·  4Comentários