在Swift 5中有没有一种方法可以迭代所有的keypath?我知道Mirror将为您提供键的字符串表示,但我不能使用setValue,因为我的对象不是从NSObject继承的,并且有几个值与@objc不兼容。我正在尝试做类似下面这样的事情(伪编码):
func overwrite(source:T, overwrite:T) {
for keypath in overwrite.allKeypaths() {
source[keyPath: keyPath] = overwrite[keyPath: keyPath]
}
}这里的最终目标是首先在现有对象中创建一个浅拷贝,然后可能将其扩展到包括基于值类型的深拷贝。
发布于 2021-03-07 23:21:35
这在Swift中是不可能的。没有办法获得给定对象上的所有keypaths。但是,您可以使用Mirror查看对象的所有属性,以获得objective-c对象的字符串表示。然而,并不是所有的值类型都可以使用setValue以这种方式设置,因为并不是所有的Swift类型都转换为objective-c。
https://stackoverflow.com/questions/66415613
复制相似问题