使用反射在Swift中更改属性

ste*_*ris 6 reflection swift

我正在尝试创建一个将更改对象属性的序列化程序.

例:

class testobj{
    var prop1:Int = 3
    var prop2:String = "Hello"
    var prop3:Dictionary<String,String> = Dictionary<String,String>()
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用访问属性的名称和类型

reflect(testobjc())[0].1
Run Code Online (Sandbox Code Playgroud)

var tester = testobj()
_std_lib_DemangledTypeName(tester.prop1)
Run Code Online (Sandbox Code Playgroud)

但我想做的事情是这样的

var tester = testobj()
for(var x:Int = 0; x < reflect(testobj()).count; x++){
    if(_std_lib_DemangledTypeName(tester.(reflect(testobj())[0].1)) == "Swift.String"){
        tester.(reflect(testobj())[0].1) = "World!"
    }
}
Run Code Online (Sandbox Code Playgroud)

本质上,我想遍历为给定类列出的所有属性,并在该类的新创建的对象上设置属性.任何指导将不胜感激.快速反射对我来说是新的.

Edw*_*eer 1

您可以使用此类从对象创建字典并从字典创建对象。 https://github.com/evermeer/EVReflection