如何使用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 作者提交 拉取请求 。
我正在尝试 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 作者提交 拉取请求 。