ext*_*ade 0 foreach attributes class swift3
我试图从继承自类的对象中打印所有值,这是我的示例:
我创建类:
 class Pokemon {
 var name: String?
 var type: String?
 var level: Int?
 var exp = 0.0
}
创建对象并分配一些值:
var pikachu = Pokemon()
pikachu.name = "Pika Pika"
pikachu.level = 1
pikachu.type = "electricity"
pikachu.exp = 0
现在,我想遍历所有皮卡丘对象属性并打印值。我在为每个循环考虑,但我不确定如何实现它。
我知道我可以做这样的事情:
func printStats(pokemon: Pokemon) {
if pokemon.name != nil {
    print(" name: \(pokemon.name!)\n level:\(pokemon.level!)\n type:\(pokemon.type!)\n exp: \(pokemon.exp!)")
 }
}
printStats(pokemon: pikachu)
输出:
name: Pika Pika
level:1
type:electricity
exp: 0.0
但是我只想遍历所有值,而不是显式地编写函数中的每个属性。
我发现它是这样做的方式:
let pokeMirror = Mirror(reflecting: pikachu)
let properties = pokeMirror.children
for property in properties {
  print("\(property.label!) = \(property.value)")
}
输出:
name = Optional("Pika Pika")
type = Optional("electricity")
level = Optional(1)
exp = Optional(0.0)
如果要删除“可选”,只需初始化属性即可。