列出所有类属性swift 3

ext*_*ade 0 foreach attributes class swift3

我试图从继承自类的对象中打印所有值,这是我的示例:

我创建类:

 class Pokemon {

 var name: String?
 var type: String?
 var level: Int?
 var exp = 0.0
}
Run Code Online (Sandbox Code Playgroud)

创建对象并分配一些值:

var pikachu = Pokemon()

pikachu.name = "Pika Pika"
pikachu.level = 1
pikachu.type = "electricity"
pikachu.exp = 0
Run Code Online (Sandbox Code Playgroud)

现在,我想遍历所有皮卡丘对象属性并打印值。我在为每个循环考虑,但我不确定如何实现它。

我知道我可以做这样的事情:

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)
Run Code Online (Sandbox Code Playgroud)

输出:

name: Pika Pika
level:1
type:electricity
exp: 0.0
Run Code Online (Sandbox Code Playgroud)

但是我只想遍历所有值,而不是显式地编写函数中的每个属性。

ext*_*ade 5

我发现它是这样做的方式:

let pokeMirror = Mirror(reflecting: pikachu)
let properties = pokeMirror.children

for property in properties {

  print("\(property.label!) = \(property.value)")

}
Run Code Online (Sandbox Code Playgroud)

输出:

name = Optional("Pika Pika")
type = Optional("electricity")
level = Optional(1)
exp = Optional(0.0)
Run Code Online (Sandbox Code Playgroud)

如果要删除“可选”,只需初始化属性即可。