我正在使用此功能
public mutating func encodeIfPresent<T>(_ value: T?, forKey key: KeyedEncodingContainer.Key) throws where T : Encodable
编码实体
但是我的实体包含一个字典,我也想用这个函数来编码
encodeIfPresent
接受符合Encodable协议的通用值。
如何声明我的字典var customFields: [String: Encodable.Type]?
或var customFields: [String: T] where T : Encodable
以允许将字典的值传递给该函数?
注意:这两种方法只是我尝试但失败的例子。
答案 0 :(得分:0)
我的问题可能与此Store Encodables in a Swift Dictionary
重复使用它的第一个解决方案,我做到了。
struct EncodableValue: Encodable {
let value: Encodable
func encode(to encoder: Encoder) throws {
try value.encode(to: encoder)
}
}
public struct JWTPayload: Codable {
var customFields: [String: EncodableValue]?
}
//how to use it
payload.customFields = ["name": EncodableValue(value: "wang"),
"isAdmin": EncodableValue(value: true),
"age": EncodableValue(value: 125),
"height": EncodableValue(value: 181.5)]