Objectmapper: Binäroperator ')

Erstellt am 8. März 2017  ·  3Kommentare  ·  Quelle: tristanhimmelman/ObjectMapper

Hallo,
Ich versuche, ein Json einem Objekt zuzuordnen, und es gibt einen Wert (eine ganze Zahl), der immer Null ist.

Dies ist mein Json-Beispiel:

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

Und das ist mein 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)

    }
}

Da der json "age" zurückgibt, ohne "" zu verwenden, versuche ich, ihn mit der transformOF-Funktion in einen String zu konvertieren, damit ich ihn in der Variablen "age" vom Typ string speichern kann (ich kann den Typ von "age" nicht ändern zu Int, da ich im Folgenden Realm-Unterstützung hinzufügen werde und diese Variable ein String sein muss).

Wie auch immer, ich kann das Projekt aufgrund dieses Fehlers nicht kompilieren, wenn ich versuche, die Transformationsfunktion anzuwenden:

Der binäre Operator '<-' kann nicht auf Operanden vom Typ 'String' und '(Map, TransformOf)'

Wie kann ich TransformOf richtig verwenden, um meine ganze Zahl in eine Zeichenfolge umzuwandeln?

Danke

Hilfreichster Kommentar

@adasoft-dev, du machst es genau umgekehrt. TransformOf ist definiert als TransformOf<Object, JSON> , was String und 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
    }
  }
)

Alle 3 Kommentare

+1

@adasoft-dev, du machst es genau umgekehrt. TransformOf ist definiert als TransformOf<Object, JSON> , was String und 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
    }
  }
)

Ich habe das gleiche Problem. Der Server gibt immer den Wert zurück, ist int type oder string type, irgendwann wird der Wert geändert, also wünschte ich, der definierte Typ in der Klasse könnte der Werttyp im json-String transformiert werden. SO muss ich den Typ in der Klasse nicht ändern.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen