![]() |
1
1
首先,您应该减少系统中选项的数量。有多种方法可以处理可选集合(例如,像您建议的那样改变助手方法),但可选的过度使用会造成许多不必要的复杂性。任何类型的集合都应该是可选的,这是非常罕见的。只有当
与其将整个数据模型包装在特定的JSON API上,不如将JSON转换为所需的数据模型。例如,这里有一个JSON模型,它包含一个必需的Int,可能包含也可能不包含数组,但在内部,我们希望将“缺少的数组”视为“空”我们还希望在发送空数组之前剥离它们。
这将所有工作转移到两种方法中,而不是每次访问数据模型时将其分散到整个程序中。自定义代码表的编写仍然有点乏味(并且可能会在编码器步骤中引入细微的错误),因此如果您有很多代码表,您应该查看 SwiftGen 可以帮你写。 如果您真的想跟踪某个键是否丢失或为空(因此您可以按照发送给您的方式重新编码),那么我可能会通过以下方式对可选属性进行阴影处理:
“真实”
另一种常见的技术是创建一个适配器层,将“JSON兼容”结构转换为内部数据模型并返回。如果方便的话,这允许您的内部数据模型与JSON略有不同。 当然,您也可以创建helper方法,但所有这些的真正关键是不允许Optionals泄漏到程序的其他部分,而这些部分实际上不是可选的。如果系统中的某个地方一定存在复杂性,请将其放在解析/编码点,而不是使用点。 |
![]() |
2
0
您也可以始终为optionals提供初始值,只需尝试声明如下数组
|
|
Henry Vonfire · 如何在Slick中实现值类型? 10 年前 |