У вас было небольшое недоразумение.Когда вы определяете:
protocol ViewControllerDelegate: class, Alertable {}
extension MyViewController: ViewControllerDelegate {
typealias Alert = AlertType // ! here i specify the associated type !
func show(alertOfType alertType: Alert) {
// code..
}
}
typealias определяется в MyViewController
, но не ViewControllerDelegate
.Непонятно, зачем вам нужно ViewControllerDelegate
в этом вопросе, но, возможно, что-то, чего мы не видим в реальном приложении.
В ViewModel
, измените с ViewControllerDelegate
на MyViewController
:
final class ViewModel {
weak var viewController: MyViewController?
// ...
}
Еще одна вещь, хотя и не связанная с ошибкой: вы используете множество final class
es.Должны ли они быть struct
s вместо?