У меня есть следующие протоколы и ViewModelSwift ViewModel с ассоциированным типом для UITableViewCell
class ViewModel1 {}
class ViewModel2 {}
protocol CellViewModelType {
typealias ViewModel
func bind(vm:ViewModel)
}
class TVC1 : UITableViewCell, CellViewModelType {
typealias ViewModel = ViewModel1
func bind(vm:ViewModel)
}
class TVC2 : UITableViewCell, CellViewModelType {
typealias ViewModel = ViewModel2
func bind(vm:ViewModel)
}
Эта установка позволяет мне связать ViewModel к классу TableViewCell. Но дело в том, где я борюсь является обязательным себя:
// error: Protocol 'CellViewModelType' can only be used as a generic constraint because it has Self or associated type requirements
let cell = tableView.dequeueReusableCellWithIdentifier(item.0, forIndexPath: indexPath) as! CellViewModelType
cell.bind(someViewModelReference)
только обходной путь я пришел до сих пор является использование динамической диспетчеризации (performSelector
), мне было интересно, если есть способ, чтобы вызвать метод напрямую без использования времени выполнения.