Привет,
Я пытаюсь сопоставить 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 для преобразования целого числа в строку?
Спасибо
+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 мог быть преобразован. ТАК, мне не нужно менять тип в классе.
Самый полезный комментарий
@ adasoft-dev, у вас все наоборот.
TransformOf
определяется какTransformOf<Object, JSON>
что соответствуетString
иInt
.