Objectmapper: 二元运算符 ')

创建于 2017-03-08  ·  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在不使用“”的情况下返回“年龄”,我尝试使用transformOF函数将其转换为字符串,因此我可以将其存储在字符串类型的“年龄”变量中(我无法更改“年龄”的类型到 Int,因为接下来我将添加领域支持,并且我需要该变量为字符串)。

无论如何,由于我尝试应用转换函数时出现此错误,我无法编译该项目:

二元运算符 '<-' 不能应用于类型为 'String' 和 '(Map, TransformOf)'

如何正确使用 TransformOf 将整数转换为字符串?

谢谢

最有用的评论

@adasoft-dev,你在做相反的事情。 TransformOf定义为TransformOf<Object, JSON> ,对应于StringInt

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> ,对应于StringInt

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 等级