gpt4 book ai didi

swift - 如何使包含元组的字典符合可编码的要求?

转载 作者:行者123 更新时间:2023-12-01 12:06:23 25 4
gpt4 key购买 nike

我已经在这里看到了许多其他类似的问题,但我无法找到我的案例 - 如果我错过了明显的事情,请道歉!

我有一个“事务”类,其中包含一些属性,所有这些都符合可编码并且很好地保存/加载。我刚刚添加了一个字典并收到以下错误:类型“事务”不符合协议(protocol)“可解码”和“可编码”。

字典是:

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

钱从哪里来: 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 提供一种手动工作的方法。

非常感谢任何指导!

最佳答案

问题是您的 Dictionary 中的值是 Tuple s 和元组不符合 Codable .遗憾的是,您甚至无法扩展 Tuple ,因为它们是非名义类型,所以您必须切换到另一种数据类型或自己实现编码和解码方法。

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

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

然后在你的 Transaction类(class),
var splitTransaction: [String:TransactionAmount<GBP>]? {...

关于swift - 如何使包含元组的字典符合可编码的要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com