如何制作包含元组的字典符合编码



我已经在这里看到了许多其他类似的问题,但是我无法找到我的案子 - 如果我错过了明显的东西,我很抱歉!

我有一个"交易"类,其中包含一些属性,所有这些属性都符合代码,并且可以很好地保存/加载。我刚刚添加了一个字典并获取以下错误:键入"交易"不符合协议"可解码"one_answers"编码"。

字典是:

var splitTransaction: [String:(amount: Money<GBP>, setByUser: Bool)]? {

钱从这里到哪里:https://github.com/flight-school/money(金钱已经符合编码,我还有其他类型的货币属性,它们运作良好。

来自https://developer.apple.com/documentation/foundation/archives_and_and_serialization/encoding_and_decoding_decoding_custom_types,我认为我必须使用编码键来编码/decode splittransaction,但我必须为每个我的编码键键还有其他属性吗?然后提供一种编码/解码的方法?还是有一种方法可以自动留下所有其他属性编码/解码,并提供了一种手动工作的方法。

任何指导都非常感谢!

问题是您的Dictionary中的值是Tuple S,而元组不符合Codable。可悲的是,您甚至不能扩展 Tuple,因为它们是非新神性的类型,因此您必须自行切换到另一种数据类型或自己实现编码和解码方法。

我建议使用自定义struct而不是元组,类似于

struct TransactionAmount<Currency>: Codable {
    let amount: Money<Currency>
    let setByUser: Bool
}

,然后在您的Transaction类中,

var splitTransaction: [String:TransactionAmount<GBP>]? {...

最新更新