我有两个协议定义了相同的associatedtype State: MyState
。其中一个协议具有另一个协议类型的变量,所以我要做的是将类型State
的对象从一个协议传递到另一个协议。但是,这不会编译,因为除了遵循相同的协议之外,State
在视图中可能不是交互器中的。还有其他选择吗?在这里,我包含了一个片段,该片段可以按照我的意愿在操场上运行。
protocol MyState {}
protocol View {
associatedtype State: MyState
func renderState(state: State)
}
protocol Interactor {
associatedtype CustomView: View
associatedtype State: MyState
var view: CustomView { get }
}
extension Interactor {
func updateState(uiState: State) {
view.renderState(state: uiState) // <---- error: cannot invoke 'renderState' with an argument list of type '(state: Self.State)'
}
}