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

How to use Mirror to access externally defined class?

我正在尝试 Mirror 这个 class:

final class DeckPresentationController {
    ...
}

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

import DeckTransition

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

给出了这个编译错误:

unresolved identifier DeckPresentationController

有什么办法吗?

您正在尝试访问 外部 模块中声明的 internal class。因此,使用 Mirror 也不会让你到达那里 — 你 不能 像那样使用反射来破解 Swift 访问控制 ;)

作为快速破解,将 class declaration 更改为:

final class DeckPresentationController

至:

open class DeckPresentationController

然后 access/override 直接获得所需的属性 — 忘掉你的那些 hack-ish Mirror ;)

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