如何使用Swinject注册符合ObservableObject的协议



现在,我遇到了注册符合ObservableObject的协议的问题。由于ObservableObject使用关联的类型,所以我找不到一种注册它而不出现编译错误的方法。

这是我的简单模型,叫做

protocol A: ObservableObject {}

这是我的一个简单类,叫做B

final class B: A {}

这是我的组装

final class ViewStoreAssembly: Assembly{
func assemble(container: Container) {
container.register(A.self) { _ in
B()
}
}
}

我正试图将A注册到ObservableObject,但编译错误显示

协议"A"只能用作通用约束,因为它具有自身或相关类型要求

有人知道如何解决这个问题吗?这样做的好处将是

  1. 在SwiftUI中,我们可以将视图从ViewStore/presenter中解耦,以便将视图与viewModel持有者分离
  2. ViewStore/PPresenter可以通过模拟视图轻松进行测试

最好使用以下组合(无论如何,ObservableObject只对类有意义,它对模型协议本身没有任何影响,也不可能在协议周围有像ObservedObject这样的观测器(

protocol A {}
final class B: ObservableObject, A {}

我认为以下主题也会有所帮助:

如何将协议定义为@ObservedObject属性的类型?

如果@EnvironmentObject,如何创建Generic?

相关内容

  • 没有找到相关文章

最新更新