从字符串中获取结构属性 - swift

Jon*_*000 2 arrays struct swift

我声明了一个具有 4 个属性(informationA、informationB、informationC、informationD)的结构。

我还声明了一个这样的数组(该数组包含 my_struct 属性的一些名称"strings"

let keys = ["informationA", "informationB", "informationC"]
Run Code Online (Sandbox Code Playgroud)

现在我想一个for循环要经过"keys"-arrayprint out the struct property values当前字符串(“资料a”,“informationB”,“informationC”)。


struct my_struct {
    var informationA = "test"
    var informationB = "test...test"
    var informationC = "test...test"
    var informationD = "test...test..."
}



func getInformation() {
   let keys = ["informationA", "informationB", "informationC"]
   for i in keys {
       print(my_struct.i) // ERROR: Type 'my_struct' has no member 'i'

      // should print ---> "test", "test...test", "test...test"
   }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码我收到了这个错误ERROR: Type 'my_struct' has no member 'i'。有没有办法避免此消息并实现我想要的结果?

Cod*_*ent 5

您正在寻找的是反射:

struct MyStruct {
    var informationA = "test"
    var informationB = "test...test"
    var informationC = "test...test"
    var informationD = "test...test..."
}

func getInformation() {
    let my_struct = MyStruct()
    let keys = ["informationA", "informationB", "informationC"]
    let m = Mirror(reflecting: my_struct)
    let properties = Array(m.children)

    for k in keys {
        if let prop = properties.first(where: { $0.label == k }) {
            print(prop.value)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)