Swift利用反射机制(Mirror)获取类的属性列表与值

Swift利用反射机制(Mirror)获取类的属性列表与值

通过反射机制可以不用继承(当然也可以继承)NSObject就可以获取到属性列表,而如果要通过OC的RunTime获取到属性列表必须继承NSObject

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
classPerson{
private var name :String? ="piaojin"
let age :Int=20
var height :Float=100
var w :Float?
var closure : (String) -> (String) = {
(str:String)in
return"piaojin"
}
var arr : [Any]? = [Any]()
var a :Int{
get{
return8
}
set{
}
}
func sayHello(){
}
}
let person =Person()
//创建反射机制的相关对象
letm = Mirror(reflecting:person)
//获取到属性列表和对应的值
for(key,value)inm.children{
print("key:\(String(describing: key)),value:\(value),type:\(type(of: value))")
}

static属性和计算属性是获取不到的

------本文结束😘感谢阅读------