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"-array和print 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'。有没有办法避免此消息并实现我想要的结果?
您正在寻找的是反射:
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)