Class 列出所有类属性swift3

Class 列出所有类属性swift3,class,foreach,attributes,swift3,Class,Foreach,Attributes,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 =

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

我创建了一个类:

 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
现在,我想遍历所有pikachu对象属性并打印值。我在为每个循环考虑,但我不确定如何实现它

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

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

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

看起来像是

或者,您可以使用字典存储
Any?
类型的属性

e、 g


我找到了这样做的方法:

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)
如果要删除“可选”属性,只需初始化属性。

  • 使用
    镜像API
    获取实例的属性
  • 如果您正在使用NSObject开发iOS应用程序,则可能需要覆盖。然后可以使用
    print
    打印实例
镜像描述组成特定实例的部分,例如实例的存储属性、集合或元组元素或其活动枚举情况

classyourclass:NSObject{
公共重写变量说明:字符串{
变量des:String=“\(类型(of:self)):”
镜子里的孩子(反射:自我)。孩子们{
如果让propName=child.label{
des+=“\(propName):\(child.value)\n”
}
}
返回des
}
}
让instance=YourClass()
打印(实例)
在中查看更多信息

name = Optional("Pika Pika")
type = Optional("electricity")
level = Optional(1)
exp = Optional(0.0)