Swiftでインスタンスからプロパティの一覧を取得してみましょう。以下のようなPersonクラス
があるとします。
@objc(Person) class Person : NSObject { let age: Int let name: String required init(age: Int, name: String) { self.age = age self.name = name } }
reflectメソッド
を使ってオブジェクトに定義されているプロパティの一覧を取得します。
let object = Person(age: 17, name: "さくさん") var r = reflect(object) for var i = 0; i < r.count; i++ { let name: String = r[i].0 let type: Any.Type = r[i].1.valueType println("\(name): \(type)") } 出力: super: rockinonTests.Person age: Swift.Int name: Swift.String
インスタンスの内容をダンプする
プロパティの一覧を取得するという目的とは若干異なりますが、dumpメソッド
を使うことでインスタンスの内容を出力させることができます。
let object = Person(age: 17, name: "さくさん") dump(object) 出力: ▿ rockinonTests.Person #0 - super: <Person: 0x7ff57bc59a20> - age: 17 - name: さくさん