映象的基本用法
建立要成為 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: String
和 value: 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 測試