回答
Mirror
是在Swift中進行反射的類(它實際上是一個結構體)。下面是枚舉結構屬性的一個非常簡單的例子。
let a = A(a: "abc", b: 1)
let mirror = Mirror(reflecting: a)
for child in mirror.children {
print(child.label!)
print(child.value)
}
和輸出將是:
a
abc
b
1
上找到斯威夫特反射API後這是值得一讀:https://appventure.me/2015/10/24/swift-reflection-api-what-you-can-do/
鏡像僅建議用於Playgrounds和調試。如果不幸在生產中使用,它會泄漏內存。 – aBikis
@aBikis雖然文檔中提到「遊戲機和調試器使用鏡像」,但這並不一定意味着它們不能用於生產。就我個人而言,我懷疑這種反射對於光的使用會明顯緩慢。 –
我也這麼認爲!但它實際上運行速度爲3.5 X! [鏈接](https://appventure.me/2015/10/24/swift-reflection-api-what-you-can-do/)這不是什麼大不了的事,但它實際上創造了大量的記憶同時使用幾乎相同的代碼來完成上面的代碼。一個Apple沒有記錄的問題,但是當它被用作許多Structs的協議時,它最終導致我的應用程序崩潰。 – aBikis
- 1. 獲取一個結構變量顯示在UITableView Cell中? swift/xcode8
- 2. Swift如何在Swift中捕獲變量?
- 3. 在Swift中重置結構變量
- 4. 將結構體值提取到名爲字段的變量中
- 5. 如何在Java中獲取變量名?
- 6. 如何在PHP中獲取變量名?
- 7. Swift - 更改結構中的變量?
- 8. 從結構中獲取變量-c
- 9. 從主結構獲取變量結構
- 10. 如何從位於頭文件中的結構獲取變量?
- 11. 如何在Swift中獲取已定義的變量?
- 12. 如何調用HTTP獲取並保存在Swift中的變量?
- 13. 如何獲取變量名?
- 14. 如何從Swift中的UInt8變量中獲取N位?
- 15. 如何在結構中打印變量?
- 16. 如何將變量設置爲結構體的名稱?
- 17. 如何命名爲結構體的變量
- 18. Matlab:結構中變量的名稱
- 19. Go模板中的結構變量名
- 20. 如何在Bash中構造變量名?
- 21. Liferay在schedule.jsp中獲取結構名稱
- 22. 如何在Swift中更改結構中的變量存儲屬性?
- 23. 如何在jQuery中的匿名函數中獲取變量?
- 24. 在Swift中從NSData中提取結構
- 25. 如何在單行中獲取列名稱的表結構?
- 26. 如何用變量名創建結構體
- 27. 在swift中打印結構名稱
- 28. 從共享內存中讀取可變數量的結構體
- 29. 如何獲取Swift代碼中引用參數的變量名稱?
- 30. 如何獲取swift中的變量類型
https://developer.apple.com/library/watchos/documentation /Swift/Reference/Swift_Mirror_Structure/index.html – jtbandes
你將不得不使用反射。但如果你認爲你需要這樣做,那麼再想一想。 – matt