首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将继承与Swift和ObjectMapper结合使用?

如何将继承与Swift和ObjectMapper结合使用?
EN

Stack Overflow用户
提问于 2016-07-04 15:30:22
回答 1查看 667关注 0票数 3

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

但我的问题是结构如下。

ObjectA可以将子对象的列表作为数组存储在实例变量中。可以存储在实例数组中的对象可以是多种类型,比如ObjectB和ObjectC。因此,在JSON中,我应该创建一个InterfaceD,并让我的两个类实现它,并在ObjectA存储InterfaceD类型中创建数组,但是我无法理解如何使用Swift对象模型来实现它,因为它会导致空的{} JSON对象。

得到的JSON应该如下所示。

代码语言:javascript
复制
{"children":[
  {"type":"ObjectB", "value1":"foo"},
  {"type":"ObjectC", "value1":"bar", "value2":"baz"}
]}

我得到了

代码语言:javascript
复制
{"children":[
  {},
  {}
]}

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

我试过很多次,但每次都陷入死胡同。我尝试使用泛型,尝试使用Mappable协议作为我的数组类型,我尝试了经典类继承,但是都失败了。

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

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

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 10:49:04

我从来没有这个解决方案,但作为一种解决办法,我只是让我的对象从所有的值中生成一个字典。然后递归地添加子对象字典作为当前的字典值。它向我强制使用协议的每个对象添加了一个toDict()函数。当结果对象仅由一棵字典树组成时,ObjectMapper序列化工作得很好.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38188189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档