我有一个基类,实现了符合以下协议(protocol)的扩展:
protocol OptionsDelegate {
func handleSortAndFilter(opt: Options)
}
extension BaseViewController: OptionsDelegate {
func handleSortAndFilter(opt: Options) {
print("Base class implementation")
}
}
我有一个继承自BaseViewController的子类“InspirationsViewController”。我在扩展中覆盖协议(protocol)方法,如下所示:
extension InspirationsViewController {
override func handleSortAndFilter(opt: Options) {
print("Inside inspirations")
}
}
当我在子类扩展中覆盖“handleSortAndFilter”函数时遇到错误:“扩展中的小数位数还不能覆盖”
但是当我实现UITableView数据源和委托(delegate)方法时,没有看到类似的问题。
如何避免这个错误?
最佳答案
将协议(protocol)扩展与where子句一起使用。有用。
但是,我会而不是建议您在代码库中包含此类内容。
class BaseViewController: UIViewController {
}
extension OptionsDelegate where Self: BaseViewController {
func handleSortAndFilter(opt: Options) {
print("Base class implementation")
}
}
extension BaseViewController: OptionsDelegate {
}
class InsipartionsViewController: BaseViewController {
}
extension OptionsDelegate where Self: InsipartionsViewController {
func handleSortAndFilter(opt: Options) {
print("Inspirations class implementation")
}
}