获取对象的所有 KeyPath

Get all KeyPaths for an Object

Swift5 中有没有一种方法可以遍历所有键路径?我知道 Mirror 会给你键的字符串表示,但我不能使用 setValue 因为我的对象不是从 NSObject 继承的,而且有几个值不是 @objc 兼容的。我正在尝试做类似下面的事情(伪编码):

func overwrite(source:T, overwrite:T) {
  for keypath in overwrite.allKeypaths() {
    source[keyPath: keyPath] = overwrite[keyPath: keyPath]
  }
}

这里的最终目标是首先创建一个现有对象的浅拷贝,并可能将其扩展以包含基于值类型的深拷贝。

这在 Swift 中是不可能的。无法获取给定对象的所有键路径。但是,您可以使用 Mirror 查看对象的所有属性以获得 objective-c 对象的字符串表示形式。但是,并非所有值类型都可以使用 setValue 以这种方式设置,因为并非所有 Swift 类型都转换为 objective-c.