Objectmapper: Бинарный оператор ')

Созданный на 8 мар. 2017  ·  3Комментарии  ·  Источник: tristanhimmelman/ObjectMapper

Привет,
Я пытаюсь сопоставить json с объектом, и есть значение (целое число), которое всегда равно нулю.

Это мой образец json:

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

И это мой код:

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)

    }
}

Поскольку json возвращает "age" без использования "", я пытаюсь преобразовать его в String с помощью функции transformOF, поэтому я могу сохранить его в переменной "age" типа string (я не могу изменить тип "age" в Int, поскольку после этого я добавлю поддержку области, и мне нужно, чтобы эта переменная была String).

В любом случае, я не могу скомпилировать проект из-за этой ошибки, когда я пытаюсь применить функцию преобразования:

Двоичный оператор '<-' нельзя применять к операндам типа 'String' и '(Map, TransformOf) '

Как правильно использовать TransformOf для преобразования целого числа в строку?

Спасибо

Самый полезный комментарий

@ adasoft-dev, у вас все наоборот. TransformOf определяется как TransformOf<Object, JSON> что соответствует String и 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
    }
  }
)

Все 3 Комментарий

+1

@ adasoft-dev, у вас все наоборот. TransformOf определяется как TransformOf<Object, JSON> что соответствует String и 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
    }
  }
)

У меня точно такая же проблема. Сервер всегда возвращает значение типа int или типа строки, иногда значение изменяется, поэтому я хочу, чтобы определенный тип в классе, тип значения в строке json мог быть преобразован. ТАК, мне не нужно менять тип в классе.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

VictorAlbertos picture VictorAlbertos  ·  3Комментарии

amg1976 picture amg1976  ·  3Комментарии

Sajjon picture Sajjon  ·  4Комментарии

Dbigshooter picture Dbigshooter  ·  4Комментарии

maksTheAwesome picture maksTheAwesome  ·  4Комментарии