我正在开发一个以 JSON 格式存储可编码类型的 Swift 服务。该类型还定义了一个嵌套CodingKeys
枚举,以在编码为 JSON 时定义属性名称。例如,我可能有一个看起来像这样的类型:
struct MyType : Codable {
let myIntProperty: Int
let myStringProperty: String
enum CodingKeys: String, CodingKey {
case myIntProperty = "int_property"
case myStringProperty = "string_property"
}
}
现在我有一个函数想要对这些属性之一进行操作,由该属性的键路径指定。使用示例中的类型,我想要一个可以这样调用的函数:
let result = myFunc(usingProperty: \MyType.myIntProperty)
我的函数是使用以下KeyPath
类型声明的:
func myFunc<T: Codable, G>(usingProperty: KeyPath<T, G>) -> G {
...
}
为了实现我的功能,我想以某种方式不仅可以访问名为 的密钥路径参数usingProperty
,还可以访问与其关联的编码密钥。因此,当使用属性的键路径调用时myIntProperty
,我想获取编码时使用的名称,即int_property
.
有没有办法从KeyPath
参数及其根类型的CodingKeys
枚举中得出这个值?