2017-06-14 33 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

您可能需要根据您的要求将一些变量提升为“公共”。 –