【发布时间】:2021-10-08 07:42:52
【问题描述】:
我有一个想法,我正在尝试测试,我希望能够拥有一组不同的对象,这些对象都是可编码的。
这是json
{
"cells":
[
{
"header": "dummy header"
},
{
"title": "dummy title"
}
]
}
还有一张来自 Firestore 的图片,因为我不确定我是否正确地写出了那个 json:
这是迄今为止我使用泛型进行的测试
struct Submission<Cell: Codable>: Codable {
let cells: [Cell]
}
struct ChecklistCell: Codable {
let header: String
}
struct SegmentedCell: Codable {
let title: String
}
首要目标是解码具有(单元格)数组的文档,该数组可以是不同的类型,但都是可编码的。我不确定这是否可能,或者是否有更好的方法。谢谢。
更新: 我做了@Fogmeister 的解决方案并让它工作,但不是最理想的结果。它为 json 添加了一个奇怪的层,理想情况下它不会存在。有什么想法吗?
【问题讨论】:
-
你并没有真正提出问题,但让我指出任何类型都符合 Codable 如果其所有包含类型都符合 Codable
-
@JoakimDanielson 听起来你在说如果我有一个内部带有字符串类型的结构,那么该结构是自动编码的吗? "如果所有包含的类型都符合 Codable,则任何类型都符合 Codable"
-
是的,如果你声明它符合 Codable
-
考虑反过来考虑并发送符合
Codable的数据结构。 Swift 默认不支持异构数组。使用您的代码,您无法同时解码ChecklistCell和SegmentedCell。合成的实现仅支持同构数组。 -
@vadian 谢谢,我认为这清除了它,我觉得这是不可能的,一直跑到死胡同。
标签: json swift generics codable