jeudi 4 juin 2020

Why doesn't reflection work for optional types?

I am sending the viewController object to the manager class and reaching the views in the viewController with refleciton. However, if I define viewController optional, it cannot find reflection views.

class ClientManager {

var viewController : UIViewController? // not working  var viewController : UIViewController is working why?


 init (_ viewController: UIViewController) {
    self.viewController = viewController
}

 ....
}

My reflection method is ;

  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
}

How can I solve this problem?





Aucun commentaire:

Enregistrer un commentaire