• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何在 Swift 和 ObjectMapper 中使用继承?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 16:53:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我是 Swift 新手,我必须在我的 iOS(iOS >= 8) 项目中将对象结构序列化为 JSON 字符串。 所以我决定使用 ObjectMapper 库(我将它与 Cocoapod 集成)。

但我的问题是结构如下。

ObjectA 可以将子对象列表作为存储在实例变量中的数组。 可以存储在实例数组中的对象可以是多种类型,例如 ObjectB 和 ObjectC。因此,在带有 GSON 的 Java 中,我会创建一个 InterfaceD 并让我的两个类都实现它,并使 ObjectA 中的数组存储 InterfaceD 类型,但我不知道如何使用 Swift 对象模型执行此操作,因为它会导致空 {} JSON 对象。

生成的 JSON 应如下所示。

{"children":[
  {"type":"ObjectB", "value1":"foo"},
  {"type":"ObjectC", "value1":"bar", "value2":"baz"}
]}

我得到了

{"children":[
  {},
  {}
]}

请注意,必须从 objectA 和 ObjectC 序列化的两个条目应该具有不同的结构。

我尝试了多种方法,但每次都陷入了死胡同。 我尝试使用泛型,尝试使用 Mappable 协议(protocol)作为我的数组类型,我尝试了经典的类继承,但任何一个都失败了。

你知道我怎么能做到这一点吗?

请注意,我知道我可以为每个对象添加一个序列化函数并递归检索字符串并将它们连接起来。但我真的想避免自己实现 JSON 序列化程序,因为我已经成功使用了 Alamofire,因为项目中已经使用了)。此外,实现新的序列化程序容易出错,而且不是解决 IMO 问题的干净方法。

非常感谢。



Best Answer-推荐答案


我从未有过解决方案,但作为一种解决方法,我只是让我的对象根据其所有值生成一个字典。然后我递归地添加子对象字典作为当前字典值。 它为我使用协议(protocol)强制执行的每个对象添加了一个 toDict() 函数。 当生成的对象仅由字典树组成时,ObjectMapper 序列化工作正常...

关于ios - 如何在 Swift 和 ObjectMapper 中使用继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38188189/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap