gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:55:55 25 4
gpt4 key购买 nike

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

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

let keys = ["informationA", "informationB", "informationC"]

现在我想要一个 for 循环遍历 "keys"-array打印出当前字符串的结构属性值 ( “信息 A”、“信息 B”、“信息 C”)。


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"
}
}

使用上面的代码我得到了这个错误错误:类型'my_struct'没有成员'i'。有没有办法避免此消息并获得我想要的结果?

最佳答案

你要找的是反射(reflection):

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)
}
}
}

关于arrays - 从字符串中获取结构属性 - swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com