ADB*_*ADB 5 dictionary swift codable
我已经在这里看到了许多其他与我类似的问题,但我无法找到我的案例 - 如果我错过了一些明显的问题,我深表歉意!
我有一个“事务”类,其中包含一些属性,所有这些属性都符合 codable 并且可以很好地保存/加载。我刚刚添加了一个字典并收到以下错误:类型“事务”不符合协议“可解码”和“可编码”。
字典是:
var splitTransaction: [String:(amount: Money<GBP>, setByUser: Bool)]? {
Run Code Online (Sandbox Code Playgroud)
Money 来自何处:https : //github.com/Flight-School/Money(Money 已经符合 codable,我还有其他类型为 Money 的属性运行良好。
从https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types我想我必须使用编码密钥来编码/解码 splitTransaction,但这是否意味着我也必须为我的其他每个属性都有一个编码密钥? 然后也提供一种编码/解码它们的方法?或者有没有办法让所有其他属性自动进行编码/解码,而只是为 splitTransaction 提供一种手动工作的方法。
非常感谢任何指导!
问题是您的Dictionaryare Tuples 和元组中的值不符合Codable. 遗憾的是,您甚至无法扩展 a Tuple,因为它们是非标称类型,因此您必须切换到另一种数据类型或自己实现编码和解码方法。
我建议使用自定义struct而不是元组,例如
struct TransactionAmount<Currency>: Codable {
let amount: Money<Currency>
let setByUser: Bool
}
Run Code Online (Sandbox Code Playgroud)
然后在你的Transaction课堂上,
var splitTransaction: [String:TransactionAmount<GBP>]? {...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1444 次 |
| 最近记录: |