【发布时间】:2020-11-08 04:06:39
【问题描述】:
我对 SwiftUI 中的应用程序开发有点陌生。在过去的 2-3 个月里,我开发了一些小的 iOS 应用程序只是为了学习概念。否则我是 C#、Java 等方面经验丰富的开发人员。
我不太确定 SwiftUI 的一件事是围绕为项目开发类的正确架构集。我的意思是可能有几种方法
- 我们编写模型类来表示我们的应用程序需要保存的数据。在纯粹的形式中,模型类应该只关心数据,我的意思是模型类应该只包含反映数据的属性。
假设我正在编写一个库存管理应用程序,因此如果其中一个模型是商品项目,那么它的属性可能是 ID、名称、价格、条形码等。在我看来,模型类不应该像 @Published 那样关注 View 的问题, @ObservableObject、@State、@EnvironmentObject 等。模型应该只坚持代表域。对吗?
理想情况下,模型类应该写成 Class 而不是 Struct(如果我将我对 OOPS 的理解从 C++ 转移到我们编写类而不是结构的 Java/C#)
- 我们需要的第二组类是视图,即继承自 View。毫无疑问,这些必须是 Struct,因为 SwiftUI 框架是这样工作的。
现在在模型类之间(假设它们是类,或者为了 SwiftUI 框架,我们最多将它们设为 Struct)和视图类,大量的交流,状态变化,事件必须发生才能使应用程序值得做某事。我的意思是处理用户手势、创建和编辑数据,当用户在 UI 之间来回导航时应该更新屏幕。
我发现连接模型(如果它们以纯粹的形式开发)和视图有点困难。从某种意义上说,当我开始编写视图并希望实现涉及数据编辑、反映视图变化等的用例时,我发现纯模型类是不够的。必须修改它们以反映 SwiftUI 功能,例如绑定、可观察性、发布以在视图和模型之间以及两个模型之间同步数据。
想知道在模型和视图之间连接和通信的正确设计模式是什么? MVVM 是在基于 SwiftUI 的项目中使用的正确设计模式吗?如果不是,那么还有什么是正确的模式?
如果 MVVM 是正确的模式,那么是否有任何质量指南或资源或示例 SwiftUI 项目(gitHub??)我可以查看和学习?
【问题讨论】:
-
嗯... SwiftUI 实际上是基于协议+泛型的反应框架...所以你需要以某种方式满足 WWDC 2015 Crusty :)
-
感谢 Asperi。将查看 WWDC 过去的视频以构建上下文,但总的来说,如果一个人正在寻求实现 SwiftUI 应用程序或是否有其他模式,MVVM 是需要关注的模式?此外,您是否知道有任何免费/公开可用的 SwiftUI 应用程序代码库值得一看以了解?