Мне нужно добавить один и тот же метод сразу нескольким классам:
class FilterableTable: UITableViewController { ... }
class FilterableCollection: UICollectionViewController { ... }
extension FilterableTable, FilterableCollection { // я знаю, что эта строка некорректна
func filterItems(){ print('filtered!') }
}
var myTable = FilterableTable()
myTable.filterItems()
var myCollection = FilterableCollection()
myCollection.filterItems()
Экстеншен, насколько я знаю, нельзя применить сразу к нескольким классам.
Протокол позволяет лишь определить сигнатуры методов, но не сами методы.
Есть вариант с созданием протокола и затем экстеншена к нему, с телом метода. Вариант, вроде бы, корректный, но XCode на нём постоянно крашится.
Самый правильный вариант был бы через наследование, но что-то не могу сообразить, как это сделать, с учётом того, что в Swift нет наследования от нескольких классов.
Буду благодарен за помощь!