Я использую архитектуру VIPER со Swift.
Я хочу использовать протокол для докладчика, чтобы получить делегата UITableView, потому что я не хочу повторять объявления этих методов для всех докладчиков.
Итак, я создал протокол
protocol TableViewPresenterProtocol: class {
associatedtype Data
func numberOfSections()-> Int
func haeaderTitle(secton: Int)-> String?
func numberOfRows(section: Int)-> Int
func itemForCell(at indexPath: IndexPath)-> Data
func didSelect(at indexPath: IndexPath)
}
//for make optional
extension TableViewPresenterProtocol {
func numberOfSections()-> Int {
return 1
}
func haeaderTitle(secton: Int)-> String? {
return nil
}
}
class PaymentViewController {
var presenter: (PaymentPresenterProtocol & TableViewPresenterProtocol)?
}
но XCode показывает ошибку
Протокол «TableViewPresenterProtocol» может использоваться только в качестве общего ограничения, поскольку он имеет требования к типу Self или связанному типу.
Где в исходном коде это исправить?