У меня есть файл Swift, который объявляет перечисление, которое я использую в функциях класса, определенного в файле:
class EnumTableViewController: UITableViewController {
enum SectionType {
case undefined
}
public func sectionType(for sectionNumber: Int) -> SectionType {
...
}
}
Я хочу выйти из этого класса и переопределить перечисления в потомок (каждому из моих потомков нужны разные функциональные возможности, поэтому значения перечислений должны быть уникальными), и при этом он может вызывать вспомогательные методы суперкласса.
class ExampleTableViewController: EnumTableViewController {
enum SectionType {
case undefined
case first
case second
case third
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let sectionType = self.sectionType(for: section)
...
}
}
В Objective- C I может просто переопределить перечисление, как я представлял выше, но, насколько я знаю, в Swift нет способа изменить или переопределить его. Очевидно, мне нужно какое-то другое решение, но я не знаю, что искать.
Для меня важны две вещи: 1. уметь использовать функции перечисления (такие как завершение табуляции и переключатели) и 2. иметь те же функции, которые принимают это перечисление в качестве параметров только в одном месте, не повторяя их в каждом классе.