在超类中调用子类的属性?

时间:2014-11-28 04:08:05

标签: ios swift subclass

我有一个超类和多个子类。我想在某些函数中访问父类中的子类属性,因此我不必拥有太多的样板代码。父类永远不会直接实例化。

这可以通过父/子类模式实现,还是应该实现委托模式?

class ParentViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

   var parentClassArray: [AnyObject]?

   func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {    
      let result: AnyObject = childClassArray![indexPath.row]   
      //is this somehow doable or can I only call parentClassArray?
   }
}

class ChildViewController: ParentViewController {
   var childClassArray: [Product]?
}

更新

这是我提出这个问题的理由,希望它会有所帮助。

我目前在parentClassArray: [AnyObject]?中使用ParentViewController,因此我可以支持数组中的多个类。 ParentViewController具有实现UITableViewDelegate的方法,这些方法根据数组中对象的类型显示行,处理选择,显示segue等。我宁愿不在ParentViewController的所有子类中重新实现(复制和粘贴)相同的代码。

我实际上让这个概念部分工作,但是,我得到了随机EXC_BAD_ACCESS错误,我试图破译它是我的父/子类模式还是其他原因。我已经在这个主题上敲了一个多星期,我愿意现在尝试所有的变化。啊!

因此我的问题是在父类中使用子类的变量。我读过你可以使用这段代码覆盖父类变量,但我不确定它是否是正确的方法。

var childClassArray: [User]?
override var parentClassArray: [AnyObject]? {
    get {
        return self.childClassArray
    }
    set {
        super.parentClassArray = self.childClassArray
    }
}

0 个答案:

没有答案