SmartCodable
SmartCodable copied to clipboard
`toJSONString`转换的问题
struct SmartModel: SmartCodable {
@SmartAny
var name: Any?
@SmartAny
var dict: [Any]?
}
struct SmartModel2: SmartCodable {
var age: Int?
}
let dict: [String: Any] = [
"name": "Mccc",
"dict": [[
"age": 10
]]
] as [String : Any]
guard var smartModel = SmartModel.deserialize(from: dict) else { return }
guard let smartModel2 = [SmartModel2].deserialize(from: smartModel.dict) else { return }
smartModel.dict = smartModel2
print(smartModel.toJSONString())
这种情况下,调用toJSONString无法转换dict的内容 输出内容: "{"name":"Mccc","dict":[null]}"
经过smartModel.dict = smartModel2这一步处理,SmartModel. dict变成了[SmartModel2]类型。 进行SmartAny修饰属性的encode的时候目前只支持:
使用上有点超纲了。你应该将 smartModel2 转成 基本数据类型,再赋值给smartModel.dict。
我想想是否有必要内部来做这个转化支持一下。
4.4.4 或 5.0.9版本已经支持。
不过还是不建议你这样使用。 这样使用代表着dict的类型被你人为的改变了。