Swift override protocol methods in sub classes
Use protocol extension with where clause. It works. But I would not recommend you to have such things in your codebase.
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")
}
}
As far as I know you can't override methods in extensions. Extensions can only do the following: “Extensions in Swift can:
- Add computed instance properties and computed type properties
- Define instance methods and type methods
- Provide new initializers
- Define subscripts
- Define and use new nested types
- Make an existing type conform to a protocol”
Excerpt From: Apple Inc. “The Swift Programming Language (Swift 3.0.1).”