ios - 如何使用镜像访问外部定义的类?

标签 ios swift reflection cocoapods mirror

我正在尝试镜像这个类:

final class DeckPresentationController {
    ...
}

DeckTransition CocoaPod 定义, 所以我可以改变一些 var,但是镜子没有向我反射(reflect)任何东西:

import DeckTransition

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

给出了这个编译错误:

unresolved identifier DeckPresentationController

有什么想法吗?

最佳答案

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

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

final class DeckPresentationController

到:

open class DeckPresentationController

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

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

关于ios - 如何使用镜像访问外部定义的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44546747/

相关文章:

c# - 如何列出类的所有变量

c# - 如何使用反射获取 Task<T> 中 T 类型的属性?

ios - Adobe AIR AppStore 上传错误 : Invalid Code Signing Entitlements. .. 'get-task-allow' (

ios - 静态库和 Swift

java 字段变化监听器

swift - 表节标题 : multi-line/word wrapping

swift - 设置 UIImageView 的图像

iphone - 使用带有 XML 的字典 (iphone/iOs)

ios - Objective-C 在多维数组中的指定索引处插入值

Swift4:新的 Codable 协议(protocol)问题