我已经在这里看到了许多其他类似的问题,但是我无法找到我的案子 - 如果我错过了明显的东西,我很抱歉!
我有一个"交易"类,其中包含一些属性,所有这些属性都符合代码,并且可以很好地保存/加载。我刚刚添加了一个字典并获取以下错误:键入"交易"不符合协议"可解码"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>]? {...