我有一个类型的代表类UIViewController
这个委托可以是 UIViewController 的 2 个子类之一。两个子类都包含一个具有相同名称且参数相同的方法。
class TypeOne: UIViewController {
method() {
}
}
class TypeTwo: UIViewController {
method() {
}
}
目前我正在写这样的声明,当然它有效,但从 DRY 的角度来看,它让我发疯。
if let delegate = delegate as? TypeOne {
delegate.method()
} else if let delegate = delegate as? TypeTwo {
delegate.method()
}
我想做类似的事情
if let delegate = delegate as? TypeOne ?? delegate as TypeTwo {
delegate.method()
}
但是上面实际上并没有降低委托,因为我收到一个错误,即 UIViewController 类型不包含“方法”
如果第一个向下转换失败,我还能如何链接它,第二个被尝试并且委托被视为任一类型而不是基数UIViewController
?