映象的基本用法

建立要成為 Mirror 主題的類

class Project {
    var title: String = ""
    var id: Int = 0
    var platform: String = ""
    var version: Int = 0
    var info: String?
}

建立一個實際上將成為映象主題的例項。此外,你還可以向 Project 類的屬性新增值。

let sampleProject = Project()
sampleProject.title = "MirrorMirror"
sampleProject.id = 199
sampleProject.platform = "iOS"
sampleProject.version = 2
sampleProject.info = "test app for Reflection"

下面的程式碼顯示了 Mirror 例項的建立。鏡子的子屬性是 AnyForwardCollection<Child>,其中 Child 是主題屬性和值的 typealias 元組。Child 有一個 label: Stringvalue: Any

let projectMirror = Mirror(reflecting: sampleProject)
let properties = projectMirror.children

print(properties.count)        //5
print(properties.first?.label) //Optional("title")
print(properties.first!.value) //MirrorMirror
print()

for property in properties {
    print("\(property.label!):\(property.value)")
}

在 Xcode 中的 Playground 或 Console 中輸出 for for 迴圈。

title:MirrorMirror
id:199
platform:iOS
version:2
info:Optional("test app for Reflection")

在 Xcode 8 beta 2 上的 Playground 測試