Для большей гибкости внутри моих в основном статических табличных представлений у меня есть протокол, определенный следующим образом:
protocol StaticSection {
static var active: [StaticSection] { get }
// func cell(forRowAt indexPath: IndexPath, tableView: UITableView) -> UITableViewCell
// var numberOfRows: Int { get }
}
extension StaticSection: Equatable {
static func at(_ index: Int) -> StaticSection {
return active[index]
}
static func index(ofSection section: StaticSection) -> Int {
return active.index(of: section) // Not working :(
}
}
, который я использую вот так
enum MySections: StaticSection {
case header, footer, sectionA, sectionB
static var active: [StaticSection] {
// Here I can dynamically enable/disable/rearrange sections
return [MySections.header, .footer]
}
}
В реализации enum
протокола я могу получить доступ к индексу секции следующим образом:
(StaticSections.active as! [MySections]).index(of: .header)
Теперь я хочу реализовать index(ofSection section: StaticSection)
в расширении, чтобы иметь более удобный способ сделать это.Я попробовал это, как показано выше в расширении.Но я получаю сообщение об ошибке:
Не удается вызвать 'index' со списком аргументов типа '(of: StaticSection)'
Возможно ли это даже в Swift?