首页 > 解决方案 > 为什么反射不适用于可选类型?

问题描述

我将 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
}

我怎么解决这个问题?

标签: swiftreflectionoptional

解决方案


推荐阅读