SmartCodable icon indicating copy to clipboard operation
SmartCodable copied to clipboard

像HandyJSON一样支持已有模型的update?

Open trimaximus opened this issue 1 year ago • 1 comments

HandyJSON中,可以使用JSONDeserializer.update(object: &object, from: jsonString)来更新已有的模型,SmartCodable现行版本(3.4.0)并无相关特性。

trimaximus avatar May 09 '24 08:05 trimaximus

这个需求,我需要再思考一下实现的可能。 目前来看不太好实现。

intsig171 avatar May 11 '24 02:05 intsig171

我在使用Codable的过程中,用了个笨办法,传入object1,decode到另外一个对象object2,然后使用keyPath,copy非空字段到object1,效率还行。 参考链接:https://stackoverflow.com/questions/78487130/best-way-to-copy-set-of-parameters-from-one-object-to-another

trimaximus avatar May 23 '24 10:05 trimaximus

好的,我们评估一下。

intsig171 avatar May 27 '24 01:05 intsig171

可否提供你的实现思路。 最好可以提供可运行的代码。 stackoverflow上的copy方法似乎会导致示内存访问问题。虽然单个path的处理可以解决问题,但是不太好处理不同类型的WritableKeyPath,你是如何这种情况下的类型擦除的?

intsig171 avatar May 27 '24 13:05 intsig171

不同类型的WritableKeyPath 确实是个难点,鉴于我们项目对字段解析的顺序有要求,目前用硬编码的方式对已有对象进行更新,并没有优雅的解决方案,Sorry~

P.S. 我将在后续尝试实现不同类型的WritableKeyPath泛型处理,可否不要关闭此issue,方便后续联系?

trimaximus avatar May 31 '24 08:05 trimaximus

加QQ群吧: 865036731。 联系更顺畅。我实现了一个比较low的方案,至少可以实现这个需求,可以一起探讨一下。

intsig171 avatar May 31 '24 08:05 intsig171

4.0.0-beta.5 版本已支持。 查看SmartUpdater。

intsig171 avatar Jun 13 '24 06:06 intsig171