如何使用Mirror访问外部定义的类?

时间:2017-06-14 13:50:11

标签: ios swift reflection cocoapods mirror

我试图Mirror这堂课:

final class DeckPresentationController {
    ...
}

DeckTransition CocoaPod定义,所以我可以更改一些var,但镜像并没有向我反映任何内容:

import DeckTransition

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

给出了这个编译错误:

  

未解析的标识符DeckPresentationController

任何想法怎么做?

1 个答案:

答案 0 :(得分:1)

您正在尝试访问外部模块中声明的internal类。因此,使用Mirror也不会让你在那里 - 你无法使用这样的反射来破解Swift访问控制;)

快速破解,请更改class declaration

final class DeckPresentationController

为:

open class DeckPresentationController

然后直接访问/覆盖所需的属性 - 并忘记你的那个hack-ish Mirror;)

顺便说一句,如果您的编辑对其他人也有用,请考虑向原始CocoaPod作者提交拉取请求