Ios 调用子类';超类中的s属性?
我有一个超类和多个子类。我希望在某些函数中访问父类中的子类属性,因此我不必有太多样板代码。父类从不直接实例化 这是通过父/子类模式实现的,还是应该实现委托模式Ios 调用子类';超类中的s属性?,ios,swift,subclass,Ios,Swift,Subclass,我有一个超类和多个子类。我希望在某些函数中访问父类中的子类属性,因此我不必有太多样板代码。父类从不直接实例化 这是通过父/子类模式实现的,还是应该实现委托模式 class ParentViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { var parentClassArray: [AnyObject]? func tableView(tableView: UITableVie
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]?
}
更新:
以下是我提出这个问题的理由,希望能有所帮助
我目前正在ParentViewController
中使用parentClassArray:[AnyObject]?
,因此我可以支持数组中的多个类。ParentViewController
具有实现UITableViewDelegate
的方法,该方法基于数组中对象的类型显示行、句柄选择、显示序列等。我不希望在ParentViewController
的所有子类中重新实现(复制和粘贴)相同的代码
实际上,我的这个概念在一定程度上起了作用,但是,我遇到了随机的EXC_BAD_ACCESS
错误,我试图解释这是我的父类/子类模式还是其他原因。我已经在这个话题上绞尽脑汁一个多星期了,现在我愿意尝试所有的变化。啊
因此,我的问题是在父类中使用子类的变量。我知道你可以用这段代码重写父类变量,但我不确定这是否正确
var childClassArray: [User]?
override var parentClassArray: [AnyObject]? {
get {
return self.childClassArray
}
set {
super.parentClassArray = self.childClassArray
}
}
你能再解释一下你最终想做什么吗。正如您提到的“父类永远不会直接实例化”,那么我认为您可以将您试图在父类中执行的任何操作重写到子类本身中。这样,您就不必费心访问子属性。谢谢甘道夫,我对Swift/Objective C比较陌生,所以谢谢你的帮助。我将更详细地更新这个问题。