2017-06-14 83 views
1

我想Mirror這個類:如何使用Mirror訪問外部定義的類?

final class DeckPresentationController { 
    ... 
} 

DeckTransition CocoaPod定義,這樣我就可以改變一些變種,但是鏡子沒有反映什麼對我說:

import DeckTransition 

let mirror = Mirror(reflecting: DeckPresentationController()) 
print("children: \(mirror.children.first)") 
print("count: \(mirror.children.count) ") 

給出了這樣的編譯錯誤:

unresolved identifier DeckPresentationController

任何想法如何做到這一點?

+0

進口DeckTransition 讓AMIRROR =鏡(反映:DeckPresentationController()) #懸而未決的標識符「DeckPresentationController」 –

+1

這不看like'Mirror'問題的話 - 你需要先* *要能夠創建一個' DeckPresentationController'實例;) –

+0

DeckPresentationController是final類,我無法通過它達到它? –

回答

1

您正在嘗試訪問在外部模塊中聲明的internal類。因此,使用Mirror不會讓你有作爲 - 你無法使用這樣的反射破解斯威夫特訪問控制;)

作爲一個快速黑客,改變class declaration來自:

final class DeckPresentationController 

到:

open class DeckPresentationController 

,然後訪問/直接重寫所需的性質 - 和忘記有關劈肥胖型你的Mirror

順便說一句,如果您的編輯也可能對其他人有用,請考慮向原始CocoaPod作者提交拉取請求

+0

請你能給我任何應該打開或公開不是私人的鏡像類型的文檔! –

+0

您可能需要根據您的要求將一些變量提升爲「公共」。 –