获取对象的所有 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.
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.