1

我对 swift 非常陌生,我正在尝试找到一种方法来为扩展 Codable 的类使用默认编码并为某些字段添加单独的数据。

例如,我有一个类 Contact,它扩展了 Codable,有很多字段,我想对日期进行不同于默认的编码(默认情况下 JSONEcoder 将日期作为时间戳,但我想使用不同的格式)为简单起见,假设我的类是:

class Contact:Codable {
    var name: String?
    var id: String?
    var birthdate: Date?
} 

对于自定义编码,我使用了这个链接:Using Decodable in Swift 4 with Inheritance

问题是我不想单独编码每个字段,因为默认编码会这样做。我只想将某些值添加到编码的 json 中。

我还发现了这个关于动态键的链接,但我不知道如何准确地使用它:https ://gist.github.com/samwize/a82f29a1fb34091cd61fc06934568f82

这可以做到吗?

4

1 回答 1

2

如果您只想对日期进行不同的编码,您可以将 的 设置dateEncodingStrategyJSONEncoder预设值之一。

.custom如果formatted您的编码方式非常特殊,您可能希望将其设置为。

encoder.dateEncodingStrategy = .custom({
    date, encoder in
    ...
})
// or
let formatter = DateFormatter()
formatter.dateFormat = "some format"
encoder.dateEncodingStrategy = .formatted(formatter)
于 2018-07-27T07:08:46.467 回答