2016-11-09 53 views
0

我想在运行时获取类属性标签。例如, 我有此类:如何获得swift 3中的类属性标签?

class BasicD { 
    public var id_: Int64 = 0 
    public var a: Int32 = 0 
    public var c: NSData? 
    public var d: NSData? 
    } 

我需要输出为:[ID_,A,C,d]

欲财产以后像Java反射。我知道镜像就像反射,但为了在镜像中创建类属性,我应该首先初始化类,但我不想这样做。

+0

请解释一下这....我有点明白.. –

+0

你想获得你的班级的所有变量? – Rajat

+0

是的,我想获得所有的变量 – behnam27

回答

3

可以使用镜像在swift3获取类的所有属性这样

class BasicD{ 
    public var id_: Int64 = 0 
    public var a: Int32 = 0 
    public var c: NSData? 
    public var d: NSData? 
} 

let obj = BasicD() 
var arrayOfObjects: [String] = [] 
let mirror = Mirror(reflecting: obj) 
for child in mirror.children { 
    guard let key = child.label else { continue } 
    arrayOfObjects.append(key) 
    print(key) 
} 
print(arrayOfObjects) 

这里arrayOfObjects包含类的所有变量名BasicD

+2

'Mirror(reflect:obj).children.flatMap {$ 0.label}'是Swifter ... – Honey