swift - 为什么反射不适用于可选类型?
问题描述
我将 viewController 对象发送到管理器类并使用反射到达 viewController 中的视图。但是,如果我定义 viewController 可选,它找不到反射视图。
class ClientManager {
var viewController : UIViewController? // not working var viewController : UIViewController is working why?
init (_ viewController: UIViewController) {
self.viewController = viewController
}
....
}
我的反思方法是;
private func prepareTarget(obj: Any, selector : String?,cellIdentifier :String?)
-> UIView?
{
let mirror = Mirror(reflecting: obj)
var result : UIView?
for (prop, val) in mirror.children {
if prop == selector {
result = val as? UIView
break
}
if val is UITableView {
let visibleCells = (val as! UITableView).visibleCells
for cell in visibleCells {
if result == nil {
result = prepareTarget(obj: cell,selector:
selector, cellIdentifier: cellIdentifier)
}
}
}
return result
}
我怎么解决这个问题?
解决方案
推荐阅读
- google-apps-script - 为什么谷歌电子表格中的数组交集没有按预期工作?
- css - css :last-child 不影响我的最后一个元素
- php - 在非类帮助文件中添加 Laravel 依赖项
- python - 如何使用 Mac 将 python 脚本交叉编译成可执行文件?
- mysql - 如何在 Laravel 7 中连接 4 个表?
- api - 何时选择 REST 而不是 SOAP API,反之亦然?
- ionic-framework - 如何将 html 页面中的 ts 变量传递给 ts 页面,然后执行一些计算并将其传递回 html 页面?
- qt - QTimer 的替代品是什么?
- python-3.x - 我正在尝试绘制散点图,但结果仅显示 x 个标签。为什么 ylabel 不显示?
- list - 在颤振中从现有列表中创建一个新列表;在对新列表执行操作时更改两个列表