2016-11-09 13 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_、C、D]

私は、Javaでの反射のように気にいらをしたいです。私はミラーがリフレクションのようだと知っていますが、ミラーでクラスプロパティを取得するには、まずクラスを初期化する必要がありますが、それをしたくありません。

+0

のすべての変数名が含まれています。このについての詳細を説明してください.... I少し理解する.. –

+0

あなたのクラスのすべての変数を取得したいですか? – Rajat

+0

はいすべての変数を取得したい – behnam27

答えて

3

あなたはここでは、この

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) 

のようにクラスのすべてのプロパティを取得するにはswift3でarrayOfObjectsをミラーを使用することができますが、クラスBasicD

+2

'Mirror(反映:obj).children.flatMap {$ 0.label}'はSwifterです... – Honey

関連する問題