我有一个正在使用 ObjectMapper
进行映射的类。在过去,映射工作正常,但项目架构的变化使得 web 服务将 Double
字段返回到具有加密值的 String
。
是否可以在映射期间解密并将 web 服务字段转换为我的类变量?
这就是我今天拥有的:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- map["pointsBalance"]
families <- map["fam"]
}
}
这是我想做的:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- Double(Decryptor.decrypt(map["pointsBalance"]))
families <- map["fam"]
}
}
最佳答案
有几种方法可以完成数据解密。 ObjectMapper 提供协议(protocol) TransformType
来处理映射时的数据转换 (reference)。
变形金刚:
import ObjectMapper
class PointsTransform: TransformType {
typealias Object = Double
typealias JSON = String
func transformFromJSON(_ value: Any?) -> Object? {
guard let encoded = value as? String
else { return nil }
// TODO: Replace with decoding logic
return 239_584.938
}
func transformToJSON(_ value: Object?) -> JSON? {
guard let decoded = value
else { return nil }
return "\(decoded)"
}
}
型号:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- (map["pointsBalance"], PointsTransform())
families <- map["fam"]
}
}
关于ios - 将密码学与 ObjectMapper 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46042797/