0

我正在开发一个以 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枚举中得出这个值?

4

0 回答 0