SwiftUI 中的 MVVM 和适当的绑定
MVVM in SwiftUI and the appropriate Bindings
已编辑
一个应用有多个数据源
将所有数据源 combine
合二为一 class 并将其添加为一个环境对象的最佳方法是什么,请记住数据可能会更改,因此对象会更新视图?
适用于哪些绑定:
服务(API 获取):@Published?
计算变量:惰性变量?
请以图表为例。谢谢
这些问题是很好的参考:
图表
所以,你应该使用分层架构,你不会有这些问题。
- 服务层,它是最底层,从web或db,或其他服务读取数据
- 存储库层 从服务中获取数据并对其进行处理、缓存等
- 用例层 组合来自多个存储库的数据
- viewmodel层从usecase获取数据发送到view
每个服务或存储库处理一种类型的数据,例如“用户”
现在,如果您需要合并多种类型的数据,比如说用户和公司,您需要一个 Usecase 层来合并所有数据
在您的 viewmodel 上,您只使用 usecase 层
一个重要的注意事项,传递的对象在层之间发生变化,所以在 服务层 你有 UserDto (来自网络服务),和 UserEntity(来自 DB),repo 将转换 UserResponse 中的那些,你不知道它是 db 还是 webservice 甚至更多 UseCase 将 UserResponse 和 CompanyReponse 转换为 User 对象,该对象将传递给 ViewModel 并包含所有数据那里需要。
此外,在你到达视图模型层之前你不应该需要SwiftUI,如果你需要它,你做错了,使用Swift组合来处理数据.
已编辑
一个应用有多个数据源
将所有数据源 combine
合二为一 class 并将其添加为一个环境对象的最佳方法是什么,请记住数据可能会更改,因此对象会更新视图?
适用于哪些绑定:
服务(API 获取):@Published?
计算变量:惰性变量?
请以图表为例。谢谢
这些问题是很好的参考:
图表
所以,你应该使用分层架构,你不会有这些问题。
- 服务层,它是最底层,从web或db,或其他服务读取数据
- 存储库层 从服务中获取数据并对其进行处理、缓存等
- 用例层 组合来自多个存储库的数据
- viewmodel层从usecase获取数据发送到view
每个服务或存储库处理一种类型的数据,例如“用户”
现在,如果您需要合并多种类型的数据,比如说用户和公司,您需要一个 Usecase 层来合并所有数据
在您的 viewmodel 上,您只使用 usecase 层
一个重要的注意事项,传递的对象在层之间发生变化,所以在 服务层 你有 UserDto (来自网络服务),和 UserEntity(来自 DB),repo 将转换 UserResponse 中的那些,你不知道它是 db 还是 webservice 甚至更多 UseCase 将 UserResponse 和 CompanyReponse 转换为 User 对象,该对象将传递给 ViewModel 并包含所有数据那里需要。
此外,在你到达视图模型层之前你不应该需要SwiftUI,如果你需要它,你做错了,使用Swift组合来处理数据.